Entwickler-Ecke
Windows API - Mausclick in meiner Applikation abfangen
Crowbar - Sa 03.01.04 17:59
Titel: Mausclick in meiner Applikation abfangen
Hallo,
ich habe eine TForm und möchte den linken Mausclick abfangen, um z.b. eine Komponente von Visible:=true auf Visible:=false zu setzen.
Ein Maushook dürfte nicht notwendig sein, da ich diesen Mausclick nur in meiner Applikation abfangen möchte.
Das "OnMouseDown"-Ereignis kann ich auch nicht nutzen, da auf meiner TForm noch verschiedene Panels liegen.
Es sollte irgendwie mit:
Quelltext
1: 2:
| Private { Private-Deklarationen } Procedure MausClick(var sMsg: TMessage); message WM_???; |
funktioneren oder?
Crowbar
ErnestoChe - Sa 03.01.04 18:45
Hi,
die gesuchte Message lautet WM_LBUTTONDOWN:
Delphi-Quelltext
1:
| procedure WMLButtonDown(var Msg: TWMLButtonDown); message WM_LBUTTONDOWN; |
Aber da könntest du gleich mit dem OnMouseDown der Form arbeiten und die Linke Maustaste abfragen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then end; |
Und dann einfach den Panels im Objektinspektor das OnMouseDown der Form zuweisen. Der obere Code mit dem Message abfangen gilt auch bloss nur für die Form und nicht für die Panels.
MFG
- Ernesto -
Crowbar - Sa 03.01.04 18:57
Hi,
Zitat:
Der obere Code mit dem Message abfangen gilt auch bloss nur für die Form und nicht für die Panels.
...das wusste ich nicht. Also werde ich den Weg über OnMouseDown gehen.
Danke für die Info!
Tschüss Crowbar
ErnestoChe - Sa 03.01.04 19:22
Hi nochmal,
eine weitere Möglichkeit wäre es dem OnMessage-Ereignis des Application-Objekts eine Methode zuzuweisen. Dann gilt der Code für die gesamte Applikation und allen seinen Fenstern:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| private procedure AppMsg(var Msg: TMsg; var Handled: Boolean);
procedure TForm1.AppMsg(var Msg: TMsg; var Handled: Boolean); begin if Msg.message = WM_LBUTTONDOWN then begin Handled := True; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := AppMsg; end; |
MFG
- Ernesto -
Crowbar - Sa 03.01.04 19:25
Hi,
ja, so, wie mit dem OnMessage-Ereignis habe ich es mir vorgestellt.
Vielen Dank!
Tschüss
Crowbar
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!