Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Enter abfangen (https://www.delphipraxis.net/8820-enter-abfangen.html)

deusmac 12. Sep 2003 15:54


Enter abfangen
 
Wenn ich in einem edit oder memous fenster etwas schreibe möchte ich, dass wenn ich auf enter drücke eine Prozedur ausgelöst wir. Wie mache ich das am besten

citybreaker 12. Sep 2003 15:57

Re: Enter abfangen
 
Hiermit sollte es gehen.
Delphi-Quellcode:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    Vk_Retun: begin (* Quelltext *) end;
  end;
end;
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

MacGuyver 12. Sep 2003 16:30

Re: Enter abfangen
 
Hi!

Oder du nimmst OnKeyPressed. Dort kannst du sogar einen anderen Code weitergeben. Daß z.B. ein Stern auftaucht. 8-) Dafür einfach
If Key=#13 Then
Key:='*';
einsetzen.

neolithos 12. Sep 2003 16:38

Re: Enter abfangen
 
Um Nebeneffekte (ausführen des Defaultbutton) zu vermeiden sollte man noch die Nachricht WM_GETDLGCODE (DLGC_WANTALLKEYS zurückgeben) abfangen (in Windows).

deusmac 4. Dez 2003 14:59

Re: Enter abfangen
 
was ist das für ne nachricht? und wie fängt man sie ab? - bekommt man dadurch das komische geräusch weg? das ausgelöst wird wenn ich das enter in einem memo abfange

Thunderchild 4. Dez 2003 15:22

Re: Enter abfangen
 
Damit unterdrückst Du das Soundevent (steht in der Code Library oder so)
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var mgsTemp: TMsg;
begin
  if Key = VK_RETURN then PeekMessage(mgsTemp, 0, WM_CHAR, WM_CHAR, PM_REMOVE)
end;

Sourcemaker 4. Dez 2003 15:28

Re: Enter abfangen
 
Hi,

ich weise dem Key in KeyDown 0 und in KeyPress #0 zu u.a. um die weitere Bearbeitung zu verhindern.
Für das Ping macht es auch einen Unterschied was für ein Key abgefragt wird in KeyDown kommen es im Gegensatz zu KeyPress aber nie.

Grüße

Frank


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