Auch wenn das Thema schon sehr alt ist, das Problem ist geblieben. Und manchmal macht es eben Sinn, schon vor dem [OK] zu prüfen.
Delphi-Quellcode:
procedure TTestDialog.EditExit(Sender: TObject);
begin
if Screen.ActiveControl = Button
then Exit
else Validate(Sender);
end;
Das funktioniert einwandfrei. Button wird erst zum ActiveControl wenn er angeklickt wird und erst dann kommt es zum TEdit.OnExit