![]() |
SetFokus aber nur unter bestimmten Bedingungen
Hallo,
gegeben ist D11.3 und eine VCL Anwendung. In einem Frame gibt es ein TEdit mit einem OnExit Event. Dort wird der eingegebene Text an die Geschäftslogik übergeben. Wird ein leerer Text eingegeben, führt das in der Geschäftslogik gewolltermaßen zu einer Exception. Die wird im OnExit abgefangen und ein Ballon Hint wird angezeigt. Soweit so gut. Nun wollte ich aber verhindern, dass in dem Fall das Feld verlassen werden kann. Naja, .SetFocus am betreffenden Edit ist schnell aufgerufen. Aber: jetzt ist der Frame wo eingebettet wo es auch einen Abbrechen Button gibt. In dem Fall soll ein leeres Eingabefeld jedoch nicht zum Problem werden. => wie bekomme ich .SetFokus nur dann aufgerufen, wenn die Ursache zum Verlassen des Eingabefeldes nicht der Abbrechen Button war? Ein Boolsches Flag, welches vom Abbrechen Button gesetzt wird funktioniert natürlich nicht, da dessen OnClick Handler dann natürlich noch nicht gelaufen ist. Grüße TurboMagic |
AW: SetFokus aber nur unter bestimmten Bedingungen
Ich nehme mal an, du hast Deine Abbruch-Logik im Frame selber untergebracht.
Dann könntest Du das im OnExit-Event des Edits z.B. so machen:
Delphi-Quellcode:
Damit wird auf Leer sein des Edits immer (nur dann) getestet, wenn das Active Control nicht bncancel ist.
if (Screen.ActiveForm.ActiveControl <> NIL) then begin
if (Screen.ActiveForm.ActiveControl is TButton) and ((Screen.ActiveForm.ActiveControl as TButton).Name = 'bnCancel') then begin exit; end; if edit1.Text = '' then begin ShowMessage ('Bite text eingeben'); Edit1.SetFocus; end; end; |
AW: SetFokus aber nur unter bestimmten Bedingungen
Danke, dein Prinzip funktioniert!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz