Delphi-PRAXiS
Seite 1 von 2  1 2      

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:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.
Seite 1 von 2  1 2      

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