Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Auf RETURN-drücken im Edit reagieren (https://www.delphipraxis.net/38681-auf-return-druecken-im-edit-reagieren.html)

SleepyMaster 22. Jan 2005 18:48


Auf RETURN-drücken im Edit reagieren
 
Hi ihrs...

weiß jemand von euch was die WM ist, die gesendet wird, wenn in einem Edit eine Taste gedrückt wird?
(Ich will anstelle dem "DING" welches man beim drücken der enter-taste hört, eine andere Aktion durchführen)

Vielen Dank...

kill -9 22. Jan 2005 18:53

Re: Auf RETURN-drücken im Edit reagieren
 
Beim Edit-OnKeyDown-Ereignis:
if key = 13 then {13 ist der ASCII für Return...}
begin
//Aktion die du durchführen willst
end;

(damit bekommst du dann "Pling"
leider auch nicht weg :( )

Dax 22. Jan 2005 18:55

Re: Auf RETURN-drücken im Edit reagieren
 
Es funktioniert schon ;)

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then Key := #0;
end;

mirage228 22. Jan 2005 18:57

Re: Auf RETURN-drücken im Edit reagieren
 
Hi,

Du kannst auch das OnKeyPress Ereignis des Edits verwenden.

Das sähe dann z.B. so aus

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    // Aktion ...
    Key := #0;
  end;
end;
Wobei das Key := #0; dafür sorgt, dass kein Beep-Ton beim Drücken der Enter-Taste erzeugt wird.
Und, wie bereits erwähnt, steht das #13 für das ASCII Zeichen Nr. 13 (= CR = Carriage Return) und wird gesendet, falls die Enter-Taste gedrückt wurde.

mfG
mirage228

SleepyMaster 22. Jan 2005 18:58

Re: Auf RETURN-drücken im Edit reagieren
 
Ich suchte eigendlich eine NonVCL-Lösung (WinAPI)...

Weiß dafür jemand eine Lösung?

mirage228 22. Jan 2005 19:02

Re: Auf RETURN-drücken im Edit reagieren
 
Hi,

das müsste dann die WM_CHAR Message sein, auf die Du reagieren musst.

mfG
mirage228

Luckie 22. Jan 2005 19:04

Re: Auf RETURN-drücken im Edit reagieren
 
MSDN-Library durchsuchenWM_KEYDOWN für die virtuellen Tastaturcodes bzw WM_CHAR wenn ein Zeichen eingetippt wird, und dann das Edit subclassen.

SleepyMaster 22. Jan 2005 19:09

Re: Auf RETURN-drücken im Edit reagieren
 
Genau das hatte ich mir zuerst auch gedacht...

aber wenn das Edit oder ein anderes Control breits den Focus hat dann passiert bei einer Eingabe nichts mehr...

TStringlist 22. Jan 2005 19:57

Re: Auf RETURN-drücken im Edit reagieren
 
also der Code unten tut's bei mir jedenfalls. Damit unterbleibt einmal dieses "DING" und andere Aktionen könntest du da ebenfalls noch auszuführen.


Delphi-Quellcode:
var
  Form1: TForm1;
  OldWndProc : cardinal;

implementation

{$R *.dfm}


function Edit1WndProc(hWnd1: hWnd; uMsg: UInt; wP: WParam; lP : LParam) : LResult; stdcall;
begin
  case uMsg of
    // ...
    wm_Char : if wP = 13 then begin
                wp := 0;
                // und eine sonstige Aktion!
              end;
  end; { of case }
  Result := CallWindowProc(Pointer(OldWndProc), hWnd1, uMsg, wP, lP);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  OldWndProc := SetWindowLong(TWinControl(Edit1).Handle,GWL_WndProc,integer(@Edit1WndProc));
end;
...oder wie meintest du das genauer mit dem Focus?

SleepyMaster 22. Jan 2005 21:25

Re: Auf RETURN-drücken im Edit reagieren
 
So gehts tatsächlich...

vielen Dank...

ich dachte man könnte das alles in der WndProc der Form erledigen und wusste nicht, dass man noch eine eigene fürs edit erstellen muss/kann. :oops:

thx... :love:


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