Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form.OnMouseMove (https://www.delphipraxis.net/66555-form-onmousemove.html)

egal 31. Mär 2006 11:52


Form.OnMouseMove
 
Tja, vielleicht wurde dieses Thema schon mehrmals besprochen, aber ich bin irgendwie nicht fündig geworden. :shock:
Meine Form ist mit verschidenen Steuerelemeten überdeckt und wenn ich dieses Ereigniss Form.OnMouseMove versuche aufzurufen, dann klappt's nicht immer. Wie kann man da die Rheienfolge ändern? Zuerst sollte OnMouseMove von Form aufgerufen werden, nicht von Steuerelementen.

Angel4585 31. Mär 2006 11:56

Re: Form.OnMouseMove
 
du meinst wenn du über ein Steuerelement fährst wird das Form.OnMouseMove nicht aufgerufen?

was genau willst du damit denn bezwecken?

toms 31. Mär 2006 12:01

Re: Form.OnMouseMove
 
Hallo,

Setze eine TApplicationEvents Komponente auf deine Form und ueberpreufe im OnMessage Ereignis
die Nachrichten auf WM_MOUSEMOVE.

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_MOUSEMOVE) then
   begin
     Caption := Format('%d:%d', [Mouse.CursorPos.X, Mouse.CursorPos.Y]);
    end;
end;

egal 31. Mär 2006 12:15

Re: Form.OnMouseMove
 
Zitat:

Zitat von Angel4585
du meinst wenn du über ein Steuerelement fährst wird das Form.OnMouseMove nicht aufgerufen?

ja genau.
Ich habe einfach ein Problem mit einem Steuerelement, der reagiert nicht(Handle kaputt).
Und ich wollte mit der Mausbewegung dieses Steuerelement wieder aktivieren.

egal 31. Mär 2006 12:21

Re: Form.OnMouseMove
 
Zitat:

Zitat von toms
Hallo,

Setze eine TApplicationEvents Komponente auf deine Form und ueberpreufe im OnMessage Ereignis
die Nachrichten auf WM_MOUSEMOVE.

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_MOUSEMOVE) then
   begin
     Caption := Format('%d:%d', [Mouse.CursorPos.X, Mouse.CursorPos.Y]);
    end;
end;

danke, probiere gleich aus.

egal 31. Mär 2006 12:38

Re: Form.OnMouseMove
 
jo, mit ApplicationEvents hat's wunderbar geklappt. :cheers:

Mikro 5. Jul 2007 16:18

Re: Form.OnMouseMove
 
Hi,

ich versuche sowas wie einen Bildschrimschoner zu bauen, zumindest ist das Prinzip gleich. Einfach, wenn die Maus nicht mehr bewegt wird, soll nach 1sek oder so irgendwas passieren. WOllte das mit dem OnMouseMOve und einem Timer machen, aber der setzt sich, sobald die Maus einmal bewegt wurde...
hatte das hier:
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
     form2.close;
end;

procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
     timer1.interval:=6000;
end;
Also jedesmal, wenn die Maus bewegt wird, soll der Interval des Timers hochgesetzt werden, so dass er gar nciht ans Ende kommt. Aber das interessiert den Timer wohl im Betrieb nicht. Jmd ne andere Idee?

bitsetter 5. Jul 2007 16:43

Re: Form.OnMouseMove
 
Hi,

eventuell ist ja MSDN-Library durchsuchenGetLastInputInfo was für dich:
Wie lange keine Benutzereingaben mehr erfolgt sind

EDIT: hast du es schon mal so versucht?
Delphi-Quellcode:
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  timer1.Enabled:= false;
  timer1.Enabled:= true;
end;


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