Hallo
Ich muss in einem 'Tedit' eine Eingabe machen. Diese soll nur gültig sein wenn ich mit Enter/Return bestätigt habe.
Wenn ich die Eingabe mit Enter bestätige komme ich aber auf den Event 'OnEditingDone'.
Dasselbe habe ich aber auch wenn 'Tedit' den Focus verliert, ist also für dieses Problem unbrauchbar.
Habe mir gedacht 'OnEnter' könnte vieleicht die Lösung sein.
In der Hilfe heist es das es ausgelöst wird wenn 'Tedit' den Focus erhält.
Und so funktioniert es auch.
Also müsste 'OnEnter' eigentlich 'OnFocus' heissen?
Gibt es einen Event der wirklich auf eine Eingabe mit Enter reagiert?
Version ist 1.8.4 auf Windows7
OnEnter Ereignis [gelöst]
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
OnEnter Ereignis [gelöst]
Zuletzt geändert von Marc am Mi 25. Jul 2018, 23:32, insgesamt 1-mal geändert.
Good code comes from experience, experience comes from bad code.
- kupferstecher
- Beiträge: 433
- Registriert: Do 17. Nov 2016, 11:52
Re: OnEnter Ereignis
Du kannst das Ereignis OnKeyDown verwenden.
Darin wird dir über die Variable Key mitgeteilt, welche Taste gedrückt wurde:
Wenn du nicht willst, dass die Tasten weiter verarbeitet werden, z.B. du willst dass bei Enter nicht OnEditingDone ausgelöst wird, kannst du den mit key=0 den Tastenwert verwerfen.
Darin wird dir über die Variable Key mitgeteilt, welche Taste gedrückt wurde:
Code: Alles auswählen
uses LCLType
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key=VK_RETURN then begin
//Werte übernehmen...
end else if key=VK_ESCAPE then begin
//Werte verwerfen
end;
end;
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: OnEnter Ereignis
Danke für die schnelle Antwort
Habs gerade selbst gefunden (Google).
OnKeypress Habdler und dann 'if Key = #13 '
Wenn mann weis wie es geht ist's einfach.
Ist #13 irgendwie schlechter als VK_RETURN?
Key ist in meinem Beispiel nur ein Char bei Dir ein Word?
Habs gerade selbst gefunden (Google).
OnKeypress Habdler und dann 'if Key = #13 '
Wenn mann weis wie es geht ist's einfach.
Ist #13 irgendwie schlechter als VK_RETURN?
Key ist in meinem Beispiel nur ein Char bei Dir ein Word?
Good code comes from experience, experience comes from bad code.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: OnEnter Ereignis
Viele Menschen müssen bei #13 erst überlegen, welche Taste das ist. VK_RETURN ist das wesentlich schneller zu lesen und einzuordnen.Marc hat geschrieben:Ist #13 irgendwie schlechter als VK_RETURN?
Das sind zwei verschiedene Events. OnKeyDown gibt einen Word zurück; nicht jede Tast auf der Tastatus ist auch eine Zeichen (z.B. Funktionstasten).Marc hat geschrieben:Key ist in meinem Beispiel nur ein Char bei Dir ein Word?
OnKeyPress sehe ich sowieso als veraltet an, da hier nur ein 8-Bit langes Zeichen (ASCII/ANSI) verarbeitet werden kann. Willst du alle Unicode-Zeichen verarbeiten, nimm besser OnUTF8KeyPress (wobei das in diesem konkreten Anwendungsfall egal ist).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: OnEnter Ereignis [gelöst]
Das stimmt generell sollte man diese verwenden. Nur das grosse Problem, dieses Ereignis ist sehr weit unten im Objektinspektor, so das man es übersieht, wen man es nicht kennt.Willst du alle Unicode-Zeichen verarbeiten, nimm besser OnUTF8KeyPress
Man hätte es besser OnKeyPressUTF8 genannt, dann wäre es unterhalb von OnKeyPress gewesen. Aber dies jetzt nachträglich zu ändern geht natürlich nicht mehr.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: OnEnter Ereignis [gelöst]
Danke für die vielen Antworten.
Muss das alles mal ausprobieren.
Im Moment reicht es mir die Return Taste zu 'sehen'.
Aber mit dem Essen kommt der Hunger.
Muss das alles mal ausprobieren.
Im Moment reicht es mir die Return Taste zu 'sehen'.
Aber mit dem Essen kommt der Hunger.

Good code comes from experience, experience comes from bad code.