![]() |
Message abfangen und nicht weiter geben
hallo,
ich möchte zwei messages abfangen und nicht zu meinem edit durchlassen, wie kann ich das weiter geben der nachricht verhinden.
Delphi-Quellcode:
was muss ich hier tun damit die eingaben nicht in meinem edit ankommen. :gruebel:
procedure TEdit.WndProc(var msg: TMessage);
begin case Msg.Msg of WM_KEYUP, WMKEYDOWN: begin // Was muss ich hier tun? end else inherited WndProc(msg); end; ... end; MfG, cookie |
Re: Message abfangen und nicht weiter geben
|
Re: Message abfangen und nicht weiter geben
wenn ich auf der mainform eine TApplicationEvents kompo platziere, und folgenes mache geht das auch.
Delphi-Quellcode:
das muss doch auch in der kompo selbst möglich sein.
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean); begin if (msg.message = WM_KEYDOWN) or (msg.message = WM_KEYUP) then if GetMessageExtraInfo = 200 then handled := True; end; |
Re: Message abfangen und nicht weiter geben
Was möchtest du denn erreichen?
|
Re: Message abfangen und nicht weiter geben
das die message genauso behandelt wird wie in TApplicationEvents und die eingabe nicht im edit ankommt, jenachdem was die auswertung von GetMessageExtraInfo ergibt.
|
Re: Message abfangen und nicht weiter geben
Ich weiß jetzt grad nicht, wann da GetMessageExtraInfo den Wert 200 liefert, aber ich habs mit keybd_event simuliert und da funkt dann folgende Zeilen:
Delphi-Quellcode:
...
private IgnoreMe:Boolean; ... procedure TEdit.WndProc(var Message:TMessage); begin Case Message.Msg of WM_CHAR: If IgnoreMe then begin IgnoreMe:=False; Exit; end; WM_KEYDOWN: If GetMessageExtraInfo=200 then IgnoreMe:=True; end; inherited WndProc(Message); end; |
Re: Message abfangen und nicht weiter geben
200 war da nur n beispiel, GetMessageExtraInfo gibt im allgemeinen 0 wieder, ausser du markierst es selbst.
ich dachte wenn ich WM_KEYDOWN und WM_KEYUP irgendwie behandele brauche ich WM_CHAR garnicht abfangen. Aber so müste es auch gehen. |
Re: Message abfangen und nicht weiter geben
WM_CHAR wird durch TranslateMessage gepostet, also bevor die WM_KEYDOWN-Nachricht zum Edit gelangen konnte.
|
Re: Message abfangen und nicht weiter geben
wieso kann man die sache dann so abfangen?
Delphi-Quellcode:
oder versteh ich da was nicht richtig? :gruebel:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean); begin if (msg.message = WM_KEYDOWN) or (msg.message = WM_KEYUP) then if GetMessageExtraInfo = 200 then handled := True; end; |
Re: Message abfangen und nicht weiter geben
Schau mal in Forms.TApplication.ProcessMessage:
Delphi-Quellcode:
Handled := False;
if Assigned(FOnMessage) then FOnMessage(Msg, Handled); if not IsPreProcessMessage(Msg) and not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then begin TranslateMessage(Msg); if Unicode then DispatchMessageW(Msg) else DispatchMessage(Msg); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz