OnEnter Ereignis [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...

OnEnter Ereignis [gelöst]

Beitragvon Marc » 25. Jul 2018, 22:13 OnEnter Ereignis [gelöst]

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
Zuletzt geändert von Marc am 25. Jul 2018, 22:32, insgesamt 1-mal geändert.
Good code comes from experience, experience comes from bad code.
Marc
 
Beiträge: 199
Registriert: 11. Nov 2016, 14:09
Wohnort: Schweiz
OS, Lazarus, FPC: Linux Mint 18 (WinXP VBox) | 
CPU-Target: 64Bit
Nach oben

Beitragvon kupferstecher » 25. Jul 2018, 22:28 Re: OnEnter Ereignis

Du kannst das Ereignis OnKeyDown verwenden.

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;


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.
kupferstecher
 
Beiträge: 167
Registriert: 17. Nov 2016, 11:52

Beitragvon Marc » 25. Jul 2018, 22:32 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?
Good code comes from experience, experience comes from bad code.
Marc
 
Beiträge: 199
Registriert: 11. Nov 2016, 14:09
Wohnort: Schweiz
OS, Lazarus, FPC: Linux Mint 18 (WinXP VBox) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Socke » 26. Jul 2018, 09:07 Re: OnEnter Ereignis

Marc hat geschrieben:Ist #13 irgendwie schlechter als VK_RETURN?

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:Key ist in meinem Beispiel nur ein Char bei Dir ein Word?

Das sind zwei verschiedene Events. OnKeyDown gibt einen Word zurück; nicht jede Tast auf der Tastatus ist auch eine Zeichen (z.B. Funktionstasten).
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
Socke
 
Beiträge: 2557
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Mathias » 26. Jul 2018, 16:08 Re: OnEnter Ereignis [gelöst]

Willst du alle Unicode-Zeichen verarbeiten, nimm besser OnUTF8KeyPress
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.
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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Marc » 26. Jul 2018, 23:47 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. :-)
Good code comes from experience, experience comes from bad code.
Marc
 
Beiträge: 199
Registriert: 11. Nov 2016, 14:09
Wohnort: Schweiz
OS, Lazarus, FPC: Linux Mint 18 (WinXP VBox) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried