Auf OnExit-Event einer Komponente auf einem anderen Form reagieren



  • Guten Tag!

    Ich habe ein Formular (Form1) mit einer leeren PageControl-Komponente und einem LabeledEdit. Weiterhin habe ich ein weiteres Formular (Form2) in dessen Konstruktor ich es sich selbst in das PageControl des Form1 eindocken lasse.

    Form2:

    include "form1.h"
    
    ...
    
    __fastcall TForm2::TForm2(TComponent* Owner)
    	: TForm(Owner)
    {
    	ManualDock(Form1->PageControl1);
    	Show();
    }
    

    Nun möchte ich im Form2 beispielsweise auf das OnExit des LabeledEdits von Form1 reagieren. In meinem speziellen Fall soll das Form2 aus einer Datenbanktabelle einen Neuen Datensatz mit dem Namen, der im LabeledEdit von Form1 steht, laden, sowie das LabeledEdit von Form1 verlassen wurde. Was im Endeffekt gemacht wird, sollte aber egal sein.
    Gibt es dafür eine Möglichkeit?

    Ich habe in dem Zusammenhang gelesen, dass das Schlüsselwort __closure da eine Rolle spielt, konnte aber nichts adäquates dazu entdecken.

    Vielen Dank!

    Christian



  • Du mußt für das Ereignis eine Funktion (mit passender Signatur) zur Verfügung stellen und damit verbinden:

    void __fastcall TForm2::LabeledEditExit(TObject *sender)
    {
        // ...
    }
    
    // im TForm2-Konstruktor
    Form1->LabeledEdit->OnExit = LabeledEditExit; // edited
    

    Du solltest deinen Forms aber bessere Namen geben.

    PS: Das Schlüsselwort __closure dient zur Definition von Ereignissen.



  • Vielen Dank, das hat auf Anhieb geklappt!

    Die Namen der Forms habe ich hier natürlich nur beispielhaft angegeben, in dem Projekt sind sie natürlich weitaus ausführlicher ☺


Log in to reply