Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#24

AW: WM_MOUSEMOVE in mehr als einem TControl verarbeiten.

  Alt 31. Mai 2017, 19:35
Hmm..

Es geht Dir, wenn ich es richtig verstanden habe, um ein formularweites MouseMove, egal über welchem Control sich dein Mousezeiger befindet, und ohne, dass Du das in jedem Control implementieren musst.

Also, da bietet sich (Quick and Dirty) folgendes an:

Delphi-Quellcode:
procedure TForm1.MyApplicationOnMessage(var Msg: tagMSG;
  var Handled: Boolean);
var
  P : TPoint;
  C : TControl;
begin
  if Msg.message = WM_MOUSEMOVE then begin

    P := ScreenToClient(Msg.pt);

    c := ControlAtPos(P,false,true);
    if Assigned(c) then Edit1.Text := c.Name else Edit1.Text := '';

    Label1.Caption := IntToStr( P.X);
    Label2.Caption := IntToStr( P.Y);
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Application.OnMessage := MyApplicationOnMessage;
end;
Somit hättest Du hier ein Formular-Hook. Eventuelle OnMouseMove auf Controls bleiben bestehen und funktionieren weiter.
  Mit Zitat antworten Zitat