@luckner: Ich kenne den Aufbau bei dir nun nicht aber warum deaktivierst du den Button nicht wenn das Panel aktiv wird
Button.enabled := false;
und im onChange-Event des Edit-Feldes prüfst du ob im Feld etwas steht (falls möglich auch auf Konsistenz) und wenn das passt, wird der Button erst wieder frei gegeben
Delphi-Quellcode:
procedure EditChange(Sender: TObject);
begin
if (Edit.Text = '') or //Prüfen ob Feld leer
(length(Edit.Text) <> 4) then //Konsistenzprüfung (nur ein Beispiel: hier auf Länge des Textes)
Button.enabled := False //Button deaktivieren
else
Button.enabled := True; //Button aktivieren
end;
Das macht die OnExit-Abfrage dann überflüdssig (außer du willst dabei ggf. die Edit-Felder zurücksetzen oder noch andere Anweisungen ausführen)
Dann interessiert es überhaupt nicht mehr wenn du das Panel "schließt" was im Editfeld steht.