Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 6. Okt 2004, 02:50
Also wenn du uns mal verraten hättest, dass du das im onMouseMove-Ereignis deines Forms machst, dann hätten wir dir auch sagen können, das es zwar geht, aber eben nicht so, wie du es machst.
mouse.CursorPos und getcursorpos(...) geben ja immer die richtigen Werte aus, auch wenn sie nicht über dem Form sind, nur wird halt onMouseMove, so wie es halt der Name sagt, nur ausgelöst, wenn sich die Maus innerhalb des Forms verändert, also entweder du machst das mit Hooks, oder diesem komischen SetCapture, oder du nimmst 'nen Timer ...


Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var p: tpoint;
begin
  p := mouse.CursorPos;
  label1.Caption := inttostr(p.x);
  label2.Caption := inttostr(p.y);
end;

oder

procedure TForm1.Timer1Timer(Sender: TObject);
var pos: tpoint;
begin
  getcursorpos(pos);
  label1.Caption := inttostr(pos.x);
  label2.Caption := inttostr(pos.y);
end;
Eventuell kannst du ja noch die Position zwischenspeichern und dann nur bei Veränderung was machen.
z.B.:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var pos: tpoint;
begin
  getcursorpos(pos);
  if pos.X shl 16 + pos.Y <> Tag then exit;
  Tag := pos.X shl 16 + pos.Y;
  ...
  label1.Caption := inttostr(pos.X);
  label2.Caption := inttostr(pos.Y);
  ...
end;
(ein Timer mit so um die 20 bis 100 Millisekunden sollte wohl reichen)
$2B or not $2B
  Mit Zitat antworten Zitat