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/)
-   -   Delphi Edit-Feld nach Eingabe mit ENTER verlassen (https://www.delphipraxis.net/100699-edit-feld-nach-eingabe-mit-enter-verlassen.html)

wireless 2. Okt 2007 17:57


Edit-Feld nach Eingabe mit ENTER verlassen
 
Hallo Gemeinde,

Ich habe mehrere Edit-Felder im Formular. Ich möchte über die Enter-Taste ein Edit-Feld verlassen und das nächste anspringen. Vorher möchte ich in diesem Edit-Feld Daten eingeben.
Wie geht das über ein Ereignis ?

freundliche Grüße
wireless

Matze 2. Okt 2007 17:58

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Hallo, herzlich Willkommen!

Das geht beispielsweise über die OnKeyPress/OnKeyDown-Ereignisse und Delphi-Referenz durchsuchenSetFocus.


Edit:
Ganz allgemein kannst du es auch so machen:

Delphi-Quellcode:
procedure TForm1.MyEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_RETURN then
    Perform(WM_NEXTDLGCTL, 0, 0);
end;
und allen Edits diese Prozedur dem OnKeyDown-Ereignis zuweisen.

wireless 2. Okt 2007 18:06

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Hallo Matthias,

habe ich schon probiert, auf Edit1 im Ereignis OnKeyPress des Focus auf das nächste Edit-Feld gesetzt, also Edit2.SetFocus; beispielsweise. Das lässt aber keine EINGABE im Edit1-Feld zu, zumindest keine Eingabe die länger als ein Zeichen ist. Dann sprint der Cursor respektive der Focus sofort auf das Edit2-Feld.
freundliche Grüße
wireless

dominikkv 2. Okt 2007 18:10

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Zitat:

Zitat von wireless
Hallo Matthias,

habe ich schon probiert, auf Edit1 im Ereignis OnKeyPress des Focus auf das nächste Edit-Feld gesetzt, also Edit2.SetFocus; beispielsweise. Das lässt aber keine EINGABE im Edit1-Feld zu, zumindest keine Eingabe die länger als ein Zeichen ist. Dann sprint der Cursor respektive der Focus sofort auf das Edit2-Feld.
freundliche Grüße
wireless

du darfst auch nur springen wenn enter gedrückt wurde (#10 bzw VK_RETURN)
Matze hat seinen Beitrag nochmal editiert, schau mal was er geschrieben hat

wireless 2. Okt 2007 18:16

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Hallo,

danke für die Hilfe. Es geht nur, wenn man es auf Keydown legt. Jetzt muß ich nur noch vom letzten Edit-Feld wieder auf das 1. Edit-Feld den Fokus setzen.

danke, gemeinde !!
fg

wireless

DeddyH 2. Okt 2007 18:19

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Zitat:

Zitat von wireless
Es geht nur, wenn man es auf Keydown legt.

Einspruch!
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    begin
      Key := #0;
      self.Perform(WM_NEXTDLGCTL,0,0);
    end;
end;
P.S.: VK_RETURN ist #13 ;)

dominikkv 2. Okt 2007 18:25

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Zitat:

Zitat von DeddyH
P.S.: VK_RETURN ist #13 ;)

hups -.- :wall:

wireless 2. Okt 2007 18:31

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Okay, Leute, BEIDES funktioniert.

Aber wie komme ich dann vom LETZTEN Edit-Feld zurück auf das 1. Edit-Feld, und nicht auf das nächste Objekt - ein Button - den ich jetzt nicht besuchen will ?

freundliche Grüße

wireless

DeddyH 2. Okt 2007 18:36

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Delphi-Quellcode:
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    begin
      Key := #0;
      Edit1.SetFocus;
    end;
end;
Bei mir heißt das letzte Edit halt Edit3 ;)

dominikkv 2. Okt 2007 18:38

Re: Edit-Feld nach Eingabe mit ENTER verlassen
 
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    begin
      Key := #0;
      self.Perform(WM_NEXTDLGCTL,0,0);
      if not (ActiveControl is TEdit) then
        Edit1.SetFocus;
    end;
end;


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