Autor Beitrag
Crowbar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Sa 03.01.04 17:59 
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:
ausblenden Quelltext
1:
2:
Private   { Private-Deklarationen }
   Procedure MausClick(var sMsg: TMessage); message WM_???;

funktioneren oder?

Crowbar
ErnestoChe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: Sa 03.01.04 18:45 
Hi,

die gesuchte Message lautet WM_LBUTTONDOWN:

ausblenden 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 528

Win 2000 pro, CRUX 2.0
Delphi 6 Pers, Open K3
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
  private
    { Private-Deklarationen }
    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
      // hier dein Code
    Handled := True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := AppMsg;
end;


MFG

- Ernesto -
Crowbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Sa 03.01.04 19:25 
Hi,
ja, so, wie mit dem OnMessage-Ereignis habe ich es mir vorgestellt.

Vielen Dank!

Tschüss
Crowbar