Setzen Sie den Fokus wieder auf Bearbeiten, wenn die Registerkarte auf Delphi xe2

Habe ich 7 Bearbeitungen, wo der Nutzer das setzen von zahlen,die zahlen müssen zwischen 1100 und 1500. Am Anfang, in der ersten Bearbeitung ausgerichtet ist, und die den Benutzer, geben Sie seine Nummer, und er dann tab, um den Fokus auf das nächste Bearbeiten...

Mein Programm überprüfen muss, dass die Zahl entred durch den Benutzer, und wenn es nicht die Bedingung erfüllen (1100

Ich habe versucht, diesen code auf der Edit1Change, aber es funktioniert nicht

If (1500 < (strtofloat(edit1.text)) or (strtofloat(edit1.text) <1100) then
begin
  Showmessage ('my message');
  edit1.setfocus
end;

Update

Entschuldigt mich, Jungs, meine Beschreibung des Problems war nicht sehr klar, und mein Englisch ist nicht sehr gut.

Ich habe keine problem mit dem Vergleich oder die Prüfung des Zustands, mein problem ist, dass wenn ich die Option weiter Bearbeiten, indem Sie TAB drücken, auch wenn der Zustand war nicht zufrieden, meine Nachricht erscheint Edit1.Text wird auf 0 zurückgesetzt, und der cursor springt zum nächsten Steuerelement zu Bearbeiten. Was ich möchte ist, dass, wenn der Benutzer Tab drückt und die Anzahl entred nicht die Bedingung erfüllen, erscheint die Meldung, Edit1.Text dauert 0 und der cursor bleibt auf Edit1.

Versuchte ich Stelle die überprüfung der Bedingung und der Anweisung, um den Fokus auf die gleichen Bearbeiten, in Edit1.OnExit aber es wird nicht so gut funktionieren, immer, wenn der Benutzer Tab drückt nach der Eingabe einer Zahl, die nicht die Bedingung erfüllen, erscheint die Meldung, die die erste Bearbeitung dauert 0, und der cursor bewegt sich zum nächsten Bearbeiten.

  • 1) was meinst du mit "funktioniert nicht" ? 2) Sie können jedes fertige Komponente zur Eingabe von zahlen, dass bereits Prüfungen für min-und max-3) Sie können ready-made-Bibliothek, überprüft die Eingabe und markieren Sie falsche Einträge
  • Konnte nicht mehr Zustimmen. Weshalb setzen Sie auf TEdits, wenn es TSpinEdits und wie? Auch die OnChange Ereignis ist nicht geeignet, weil es nicht ausgelöst, wenn der Benutzer verlässt den edit-Komponente durch Mausklick oder die Tabulatortaste.
  • dort ist auch problem mit der allein mit OnExit: es funktioniert nicht, wenn das Dialogfeld wird geschlossen, indem Sie die EINGABETASTE oder ESC-Taste - wenn der Fokus nicht actally bestanden aber weiter, nur die form ist geschlossen. Oder wenn TPageControl Registerkarten umgeschaltet wird, oder vielleicht Dialogfeld geschlossen, durch klicken auf TSpeedButton oder TMenuItem - das Ereignis kann nicht setzen Sie den Fokus Rücken, da TEdit.Ein Elternteil ist bereits unsichtbar. Also sollte man besser sich auf einige form-Breite validation framework
  • Meine Antwort how to catch a tab - Taste gedrückt. Veranstaltung für Reiter
  • Danke , Der link für die Veranstaltung für Reiter mir so sehr geholfen hat, war die Lösung legen Sie die Prüfung für die Bedingung und die Anweisungen (edit1.setfocus), auf die Taste up der nächsten Bearbeitung 😉
  • Kann ich nicht reproduzieren. Edit1.Text zurückgesetzt auf 0: dann ist wegen anderer code. Wir müssen sehen, áll-code, weil du etwas tust, das du noch nicht erzählt.
  • Froh, dass meine Antwort dir helfen konnte. KeyUp Event of the following TEdit . Zu zeigen, dass andere Leser, Sie haben es, sollten Sie akzeptieren eine Antwort.

InformationsquelleAutor user2931832 | 2013-10-29
Schreibe einen Kommentar