AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Focus-Problem bei Firemonkey

Ein Thema von eddie11 · begonnen am 14. Aug 2012 · letzter Beitrag vom 20. Aug 2012
Antwort Antwort
Seite 1 von 3  1 23      
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#1

Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 13:22
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:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if Edit1.Text<>'xx' then begin
    ShowMessage('Error: <>xx');
    Edit1.SetFocus();
  end;
end;
- ich Prüfe ich in meinem Beispiel auf 'xx' ab,
- 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
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 13:30
Zitat:
welches das Verlassen des Edit-Feldes veranlasst hat
?

Btw. nimm besser Sender statt Edit1
Markus Kinzler
  Mit Zitat antworten Zitat
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#3

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 13:54
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:
Btw. nimm besser Sender statt Edit1
warum?
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 13:56
Hallo,

Edit1.setFokus gibt es bei FM nicht?

Grüße
Klaus
Klaus

Geändert von Klaus01 (14. Aug 2012 um 13:59 Uhr)
  Mit Zitat antworten Zitat
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#5

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 13:59
Zitat:
Edit1.setFokus gibt es bei FM nicht?
doch, funktioniert auch üblicherweise. Aber in der oben beschriebenen Konstellation wird es anscheinend irgendwie ignoriert, bzw. die Aktivierung des zweiten Feldes wird erst danach durchgeführt.
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 14:00
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:
Btw. nimm besser Sender statt Edit1
warum?
Weil
-die Methode dann auch für andere Edits funktioniert
-auch nach Ändern der Bezeichnung des Edits funktioniert
-auch für andere Komponenten nutzbar ist
...
Markus Kinzler
  Mit Zitat antworten Zitat
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#7

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 14:03
Zitat:
Weil
-die Methode dann auch für andere Edits funktioniert
-auch nach Ändern der Bezeichnung des Edits funktioniert
-auch für andere Komponenten nutzbar ist
...
ok, das ist klar, mach ich auch üblicherweise so
ist ja nur ein Beispiel...
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
Insider2004
(Gast)

n/a Beiträge
 
#8

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 16:21
VCL <> FMX (leider). Schreibe eine Fehlermeldung in QC.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

AW: Focus-Problem bei Firemonkey

  Alt 14. Aug 2012, 16:39
Und so?
Delphi-Quellcode:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if Edit1.Text<>'xxthen begin
    ShowMessage('Error: <>xx');
    Edit1.SetFocus();
    Abort;
  end;
end;
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.

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).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#10

AW: Focus-Problem bei Firemonkey

  Alt 15. Aug 2012, 07:08
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 aber den krieg ich schon irgendwie wieder.

Danke vielmals
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz