Object übergeben



  • Hallo,

    ich bastele da an einer Klasse rum...
    Eine Methode aus der Klasse soll aus dem Formular heraus gestartet werden. Zusätzlich soll der Name des Formulars als Objekt übergeben werden. Damit ich auch der Methode heraus auf das Formular zugreifen kann. Wie kann ich das realisieren:

    Aufruf:
    int MethodenName (Object);

    Definiton:
    int MethodenName (Object MeinObject)
    {
    MeinObject->SaveDialog...

    }

    Ich bräuchte eigentlich nur die Syntax - wenn das von der Form her so richtig ist!

    Danke!



  • Was du suchst ist einen Zeigerübergeben. Du müsstest was ähnliches machen wie bei jedem Event "Sender" im Eventhandler deklariert sind.

    -junix



  • Okay, dann setze ich einfach einen Zeiger auf die Form und übergeb diesen als Parameter beim Aufruf der Methode der Klasse:

    // Deklaration
    int Speichern(????);

    // Aufruf
    Mainform *Formular; // Undefiniertes Symbol Formular
    MainMenuDatei MainMenuDateiInUse;
    MainMenuDateiInUse.Speichern(Formular);

    Also, irgendwie klappt dies nicht so ganz. Gerade mit dem Zeiger *Formular. Meinform ist meine Form, irgendwie muss ich dem sagen dass *Formular ein Zeigertyp von einer Form ist, aber wie mach ich das.

    Und dann, wie deklarier ich dann das?

    Tausend Dank!



  • Du kennst dich mit C-Grundlagen aus oder? Zeiger werden so deklariert wie du auch das Symbol deklariert hast.

    -junix



  • Ja, ich kenn mich mit C Grundlagen aus. Klar, wenn ich einen Zeiger vom Typ integer deklarieren möchte:
    int *intZeiger;

    und ich muss einen Zeiger vom Typ Form deklarieren - aber das ist genau meine Frage, wie mach ich das?
    Form *Formular geht eben nicht.

    Grüße



  • eine Form ist vom Typ TForm. schon mal damit probiert??? 😉



  • Okay, danke für den Tipp. Hab ich gemacht. Mein relevanter Quellcode sieht jetzt so aus:

    // Aufruf
    TForm *Formular = NULL;
    Formular = new TForm();
    MainMenuDatei MainMenuDateiInUse;
    MainMenuDateiInUse.Speichern(Formular);

    // Klassendeklaration
    int Speichern(TForm);

    // Methodendefiniton
    int MainMenuDatei::Speichern(TForm)

    Fehlermeldung:
    [C++ Fehler] Unit1.cpp(260): E2285 Keine Übereinstimmung für 'TForm::TForm()' gefunden

    [C++ Fehler] Unit1.cpp(261): E2459 Klassen im VCL-Stil müssen mit dem Operator new erstellt werden.



  • probiers mal so:

    int MainMenuDatei::Speichern(TForm &Form); // Methodendefiniton
    
    Speichern(*Form1); // Methodenaufruf
    


  • Ich muss doch den Zeiger nicht nur erstellen mit:
    TForm *Formular = NULL;
    sondern den Zeiger auch auf die Form legen (auf die ich ihn brauche).
    Ich glaube das ist das Problem.



  • ich verstehe nicht so ganz was du mit dem Zeiger vor hast
    ich dachte du wolltest eine methode aufrufen aus der du auf eine vorhandene Form zurückgreifst
    also ruf doch deine speichern-methode ainfach so auf:

    Speichern(*Form1);
    

    oder ich versteh dich vielleicht auch nicht richtig


Anmelden zum Antworten