AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mausposition außerhalb eines Formulars bestimmen
Thema durchsuchen
Ansicht
Themen-Optionen

Mausposition außerhalb eines Formulars bestimmen

Ein Thema von dEluXe · begonnen am 5. Okt 2004 · letzter Beitrag vom 6. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von dEluXe
dEluXe

Registriert seit: 30. Sep 2004
Ort: Berlin
12 Beiträge
 
Delphi 5 Enterprise
 
#1

Mausposition außerhalb eines Formulars bestimmen

  Alt 5. Okt 2004, 22:36
Hallo zusammen,

ich weiß das Thema mit der Mausposition wurde schon oft besprochen, aber ich habe jetzt folgendes Problem:

Ich möchte die x und y - Koordinaten des Mauszeigers (im Verhältnis zum gesamten Bildschirm) außerhalb des Formulares rausfinden.
Benutze ich:
Delphi-Quellcode:
label1.Caption := inttostr(x);
label2.Caption := inttostr(y);
werden sobald ich das Formular mit dem Mauszeiger verlasse die Koordinaten nicht mehr aktualisiert.
(außerdem werden nur die Koordinaten der Form und nicht vom ganzen Bildschirm ausgegeben)

Bei
Delphi-Quellcode:
  var p: tpoint;
begin
  p := mouse.CursorPos;
  label1.Caption := inttostr(p.x);
  label2.Caption := inttostr(p.y);
hab ich wenigstens schon die richtigen Koordinaten jedoch werden auch diese beim Verlassen des Formulars nicht mehr aktualisiert.

Vielleicht habt ihr eine Lösung für das Problem.

Vielen Dank im Voraus
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 5. Okt 2004, 22:53
Hi dEluXe,

der einzige weg wird wohl über [dp]"Hooks"[/dp] sein.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#3

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 5. Okt 2004, 23:17
Zitat:
der einzige weg wird wohl über Hooks sein.
Geht das nicht auch über MSDN-Library durchsuchenGetCursorPos oder habe ich die Frage falsch verstanden?
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 5. Okt 2004, 23:22
Hi Lukas,

Zitat von dEluXe:
hab ich wenigstens schon die richtigen Koordinaten jedoch werden auch diese beim Verlassen des Formulars nicht mehr aktualisiert.
So wie ich es verstanden habe, will er über eine Änderung der Mauskoordinaten benachrichtigt werden (so wie im OnMouseMove, welches allerdings nur funktioniert, solange die Maus über dem Formular ist).
Es gibt zwar noch einen Weg über den Timer (alte Mauskoordinaten mit aktuellen vergleichen), allerdings denke ich ist ein Hook wahrscheinlich besser: Beim Timer werden die Mauskoordinaten auch verglichen, wenn sich die Maus nicht bewegt.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 6. Okt 2004, 00:13
Zitat von alcaeus:
der einzige weg wird wohl über [dp]"Hooks"[/dp] sein.
Falsch. Es geht auch anders. Siehe dazu MSDN-Library durchsuchenSetcapture.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von dEluXe
dEluXe

Registriert seit: 30. Sep 2004
Ort: Berlin
12 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 6. Okt 2004, 01:34
HiHo,

Also als erstes mal vielen Dank für die schnellen Antworten auf meine Frage.

@Tubos
Also mit GetCursorPos tritt das gleiche Problem auf (außerhalb des Formulars gehts nicht mehr):
Delphi-Quellcode:
var
  pos : tpoint;
begin
  getcursorpos(pos);
  label1.Caption := inttostr(pos.x);
  label2.Caption := inttostr(pos.y);
@alcaeus
Ich (mittel fortgeschrittener Anfänger ) hab mal nach Informationen und Tutorials zum Thema HOOKS gesucht und hab bei dem, was ich da gefunden hab, nur verdammt wenig verstanden,
sodass ich mich erstmal an der Variante von Luckie mit dem SETCAPTURE versuchen werde.

Über Beispiele würd ich mich freuen.

dEluXe
  Mit Zitat antworten Zitat
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
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#8

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 6. Okt 2004, 06:54
Zitat:
So wie ich es verstanden habe, will er über eine Änderung der Mauskoordinaten benachrichtigt werden (so wie im OnMouseMove, welches allerdings nur funktioniert, solange die Maus über dem Formular ist).
Es gibt zwar noch einen Weg über den Timer (alte Mauskoordinaten mit aktuellen vergleichen), allerdings denke ich ist ein Hook wahrscheinlich besser: Beim Timer werden die Mauskoordinaten auch verglichen, wenn sich die Maus nicht bewegt.
aha, verstehe.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 6. Okt 2004, 09:48
na da hab'sch doch einen überlesen ... tschuldsche alci -.-''
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#10

Re: Mausposition außerhalb eines Formulars bestimmen

  Alt 6. Okt 2004, 10:26
Ich hab das für meinen Perfect Simulator schon mit getcursorpos bewerkstelligt und das hat funktioniert...
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 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