![]() |
Focus-Problem bei Firemonkey
Hi allerseits,
ich möchte nach der Eingabe in einem Edit-Feld den Inhalt überprüfen. Das mach ich im OnExit-Ereignis des Edit-Controls:
Code:
- ich Prüfe ich in meinem Beispiel auf 'xx' ab,
procedure TForm1.Edit1Exit(Sender: TObject);
begin if Edit1.Text<>'xx' then begin ShowMessage('Error: <>xx'); Edit1.SetFocus(); end; end; - im Fehlerfall setze ich den Focus zurück auf das Edit-Feld die Prüfung funktioniert: es kommt die Fehlermeldung anschließend wird der Focus aber NICHT auf das Edit-Feld gesetzt, sondern das Feld, welches das Verlassen des Edit-Feldes veranlasst hat, hat jetzt den Focus. Das gleiche Beispiel in VCL funktioniert einwandfrei. Ist das ein Bug in Firemonkey oder muss ich da irgend etwas anders machen? danke |
AW: Focus-Problem bei Firemonkey
Zitat:
Btw. nimm besser Sender statt Edit1 |
AW: Focus-Problem bei Firemonkey
naja, vielleicht habe ich mich ein bisschen undeutlich ausgedrückt, ich versuchs nochmal:
Ich habe auf der Form zwei Edit-Felder, Edit1 und Edit2. Wenn Edit1 den Focus hat und ich dann auf Edit2 klicke, dann wird das OnExit von Edit1 aufgerufen (Prüfung), Edit2 ist also das Feld, welches "das Verlassen des EditFeldes veranlasst" hat. Aufgrund der negativen Prüfung auf "xx" soll der Focus wieder zurück auf Edit1 - das passiert aber nicht, Edit2 hat jetzt den Focus. Ich möchte aber, dass der Focus von Edit1 nur dann weg ist, wenn die Eingabeprüfung ok war. Zitat:
|
AW: Focus-Problem bei Firemonkey
Hallo,
Edit1.setFokus gibt es bei FM nicht? Grüße Klaus |
AW: Focus-Problem bei Firemonkey
Zitat:
|
AW: Focus-Problem bei Firemonkey
Zitat:
-die Methode dann auch für andere Edits funktioniert -auch nach Ändern der Bezeichnung des Edits funktioniert -auch für andere Komponenten nutzbar ist ... |
AW: Focus-Problem bei Firemonkey
Zitat:
ist ja nur ein Beispiel... |
AW: Focus-Problem bei Firemonkey
VCL <> FMX (leider). Schreibe eine Fehlermeldung in QC.
|
AW: Focus-Problem bei Firemonkey
Und so?
Delphi-Quellcode:
Eventuell wird ja erst verlassen (inkl. OnExit) und dann betreten, womit dann im FMX das Setzen des Fokus nach deinem Zurücksetzen passieren würde.
procedure TForm1.Edit1Exit(Sender: TObject);
begin if Edit1.Text<>'xx' then begin ShowMessage('Error: <>xx'); Edit1.SetFocus(); Abort; end; end; Abort hilft aber nur, wenn kein Try-Finally drumrum ist, wo erst im Finally-Block der Fokus gesetzt wird, bzw. wenn in einem drumrumliegenden Try-Except nicht die stille Abort-Exception beachtet wird (welches gerne vergessen wird, womit dann der Abbruchvorgang vorzeitig abbricht). |
AW: Focus-Problem bei Firemonkey
ja geil, das hat es gebracht. Nach dem ABORT wird keine weitere Aktion (Focus setzen) mehr ausgeführt. Das funktioniert also in meinem Sinne. Nur der Cursor ist dann weg :shock: aber den krieg ich schon irgendwie wieder.
Danke vielmals :bounce2::bounce2::bounce2: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 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