Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE (https://www.delphipraxis.net/53118-mit-enter-taste-von-editfeld-zu-editfeld-und-zur-ausgabe.html)

Foxgrove 10. Sep 2005 14:55


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: :?: :?:

hanselmansel 10. Sep 2005 14:58

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

Phistev 10. Sep 2005 15:09

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:

zecke 10. Sep 2005 15:13

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
:hi:

Folgendes ins OnKeyPress von dem ersten Edit (zB Edit1):

Delphi-Quellcode:
If Key=#13 then
begin
Edit2.SetFocus;
end;
Damit setzt Du den Mauszeiger ins nächste Edit (hier Edit2). Kannst Du beliebig verändern.

edit: Einen Knopfdruck oder Funktion kannst Du natürlich auch anstelle des "Edit2.SetFocus" ausführen:
Delphi-Quellcode:
If Key=#13 then
begin
Button1.Click;
end;
Key 13 ist halt die Entertaste - klar.

Mr_G 10. Sep 2005 15:24

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
Zitat:

Zitat von zecke
...
Folgendes ins OnKeyPress von dem ersten Edit (zB Edit1):

Delphi-Quellcode:
If Key=#13 then
begin
Edit2.SetFocus;
end;
...

Das macht dann aber *beep*... :wink: Ich würde das hier bevorzugen:
Delphi-Quellcode:
If Key = #13 then
begin
  Key := #0;
  Edit2.SetFocus;
end;

zecke 10. Sep 2005 15:28

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 -_-

Phistev 10. Sep 2005 15:32

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:
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;
Damit braucht man nur eine Methode für alle Edit-Felder.

/edit: Key:= #0 vergessen

Luckie 10. Sep 2005 15:33

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
Damit Hier im Forum suchenWM_NEXTDLGCTL geht's.

Sharky 10. Sep 2005 15:36

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:
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;
In diesem Beispiel wird davon ausgegangen das edt_Edit4 das letzte Editfeld ist.

zecke 10. Sep 2005 15:41

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:

Mr_G 10. Sep 2005 15:46

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
Zitat:

Zitat von zecke
@ 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:

Stimmt genau... Aber das sollte ja kein Problem sein: Rechte Maustaste aufs Form und dann auf Tabulatorreihenfolge klicken ;).

zecke 10. Sep 2005 15:51

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
[langsam OT]
Sicherlich kein Problem ;) Aber warum so kompliziert :mrgreen:? Nein Spaß, hauptsache es funktioniert, aber ich werde wohl bei meinen wenigen Edits, bei meiner Variante bleiben (ok, das 'Key:=#0' werd ich halt einfügen - schadet ja nicht) :stupid:
[/langsam OT]

Mr_G 10. Sep 2005 16:01

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
Zitat:

Zitat von zecke
[langsam OT]
Sicherlich kein Problem ;) Aber warum so kompliziert :mrgreen:? Nein Spaß, hauptsache es funktioniert, aber ich werde wohl bei meinen wenigen Edits, bei meiner Variante bleiben (ok, das 'Key:=#0' werd ich halt einfügen - schadet ja nicht) :stupid:
[/langsam OT]

Ich dachte Foxgrove hätte die Frage gestellt :gruebel:
Wie dem auch sei: Jetzt ist für jeden 'ne Lösung dabei!

P.S.: Das reihmt sich :stupid:

Flocke 10. Sep 2005 16:03

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
Zitat:

Zitat von zecke
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

Nur so als Anmerkung: wenn du die Tab-Reihenfolge nicht richtig setzt, dann wird jeder, der die Windows-Bedienung gewohnt ist und mit Tab von Feld zu Feld springen will, dein Programm verfluchen. Ist also schon wichtig, die richtig definiert zu haben.

Foxgrove 13. Sep 2005 19:40

Re: Mit ENTER-Taste von EDITFeld zu EDITFeld und zur AUSGABE
 
Alles klar, Foxgrove hat es kapiert.

if key = #13 then

..... das war es, es klappt wunderbar ...

MfG Foxgrove :-D :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 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