![]() |
Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
Ich komme von VISUALBASIC und möchte nun in DELPHI auch
von Feld zu Feld weiterspringen (nur mit abschließendem ENTER) ohne Maus oder TAB-Taste. Mit dem letzten EINGABETEXT-Feld gleich die Rechnung auslösen und das Ergebnis ausgeben ... LÖSCHEN bzw. NEUSTART aktivieren. Geht in VB6 mit Ereignis ONKEYPRESS und dann mit der Abfrage: If KeyAscii = 13 then Feldsonundso.SETFOCUS End if Wie geht dies in DELPHI ? :?: :wink: :?: :?: |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
HiHo,
dein Form hat das Event OnKeyPress. Darin könntest du auf die Entertaste prüfen und entweder die TAB auslösen, oder aber manuell den Fokus der Felder weitersetzen. MfG, hanselmansel |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
Die Eingabefelder (TEdit, oder?) sollten auch OnKeyPress o.ä. haben. Das letzte Feld könnte dort dann den Button betätigen (TButton.Click), der Rest setzt den Focus auf den Nachfolger.
/edit. Musste man beim Form nicht noch irgendwas setzen, damit die Key-Eregignisse ausgelöst werden? :gruebel: |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
:hi:
Folgendes ins OnKeyPress von dem ersten Edit (zB Edit1):
Delphi-Quellcode:
Damit setzt Du den Mauszeiger ins nächste Edit (hier Edit2). Kannst Du beliebig verändern.
If Key=#13 then
begin Edit2.SetFocus; end; edit: Einen Knopfdruck oder Funktion kannst Du natürlich auch anstelle des "Edit2.SetFocus" ausführen:
Delphi-Quellcode:
Key 13 ist halt die Entertaste - klar.
If Key=#13 then
begin Button1.Click; end; |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
Zitat:
Delphi-Quellcode:
If Key = #13 then
begin Key := #0; Edit2.SetFocus; end; |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
:shock: was soll das machen? Also bei mir passiert nichts, als das der Cursor ins nächste Edit springt -_-
Das gleiche trage ich in das OnKey-dings des zweiten Edits und so hüpfe ich nur mit der Enter-Taste durch Programm, aber ein *beep* kommt da nicht -_- |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
Mit key:=#0 wird verhindert, dass die Taste noch weiterverarbeitet wird. Man könnte es aber noch weiter vereinfachen:
Delphi-Quellcode:
Damit braucht man nur eine Methode für alle Edit-Felder.
if Key = #13 then begin
if Sender = Edit1 then Edit2.SetFocus else if Sender = Edit2 then Edit3.Setfocus {...} else if Sender = Editx then Button1.Click; //Editx ist das letzte Eingabefeld key:= #0; end; /edit: Key:= #0 vergessen |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
Damit
![]() |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
Warum denn so kompliziert? ;-)
Einfach allen Editfeldern die Selbe OnKeyPress Methode zuweisen und dann:
Delphi-Quellcode:
In diesem Beispiel wird davon ausgegangen das edt_Edit4 das letzte Editfeld ist.
procedure TForm1.AllEditKeyPress(Sender: TObject; var Key: Char);
begin if Key = Chr(VK_RETURN) then // Wenn Entergedrückt wurde begin if (Sender = edt_Edit4) then begin //Berechnung starten end else begin Self.Perform(WM_NEXTDLGCTL, 0, 0); // Springe zum nächten Control. end; Key := #0; end; end; |
Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
@ Sharky:
Bei deinem Bsp. muss man dann auch darauf achten, dass die Tab-Reihenfolge (Begriff vergessen :mrgreen:) richtig, also wie gewünscht ist oder? Weil er springt nach dieser Richtlinie, also nach der Tab-Reihenfolge weiter oder nicht edit: unmögliches deutsch :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 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