Problem mit TEdit::OnExit in Verbindung mit TListView



  • Hallo Leute,

    ich bin auf ein seltames Verhalten der VCL gestoßen und suche nach Gründen und Lösungen 🙂

    Im OnExit-Event einiger Edits prüfe ich, ob die Benutzereingabe innerhalb des zugelassenen Wertebereichs liegt. Wenn nicht, kommt eine entsprechende Meldung und das Edit erhält wieder den Focus;

    Wenn das OnExit aber durch einen Klick auf den leeren Bereich eines
    TListViews ausgelöst wird, wird OnExit 2x aufgerufen...

    Kann sich das jemand erklären oder mir einen Hinweis geben? Ansonsten müsste ich mir den VCL-Quellcode ansehen, nehme ich an...

    VG
    Kerem

    Update Der doppelte Aufruf von OnExit tritt auch beim Klick auf ein ListItem auf.



  • Hi,

    zeig mal etwas Quellcode. Befindet sich das Editfeld oder das Listview in einem Container oder ScrollBox?

    Gruß
    Hawk



  • Hi,

    also in der eigentlichen Anwendung ist das ganze in einer ScrollBox passiert, aber es lässt sich auch ohne reproduzieren.

    Dazu ein TEdit und ein TListView auf ein Formular ziehen und diesen Code ausführen:

    void __fastcall TForm2::Edit1Exit(TObject *Sender)
    {
       Edit1->SetFocus();
    }
    

    Es liegt offensichtlich am Aufruf von SetFocus(). Wenn ich den Aufruf auskommentiere, wird Edit1Exit nur einmal getriggert.


Anmelden zum Antworten