AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mouse Move to (x,y) Bewegung sehen

Ein Thema von Natcree · begonnen am 29. Nov 2013 · letzter Beitrag vom 29. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#1

Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 12:17
Hallo ich möchte das sich mein Cursor von a nach b Bewegt. Ich versuche es mit einer Schleife

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
p:TPoint;
begin
m:=0;
repeat
getcursorPos(p);
SetCursorPos(p.x+m, p.y);
m:=m-1;
sleep(10);
getcursorPos(p);
until p.x=100;
end;
Das Problem ist er läuft bis zum linken rand durch und das Programm hängt

Setze ich until p.x=100; auf until p.x<100; dann klappt es.

Aber er bleibt nie genau bei p.x=100 stehen. Mal bei 98 mal bei 74....

Was kann ich Hier Ändern ????
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 12:19
Einfach mal im Debugger die Werte kontrollieren, dann siehst Du es schon, was Du da doppelt gemoppelt hast.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 12:27
m:=m-1; Das war es

habe es geändert auf
m:=-1;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 12:27


[edit] Die Alternative wäre gewesen, den GetCursorPos-Aufruf einmalig vor der Schleife, aber nicht mehr innherhalb derer auszuführen. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (29. Nov 2013 um 12:29 Uhr)
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 12:54
so nun habe ich sleep auf (10) gesetz der mauszeiger brauch aber zu lange.

nunmehr würde ich m:=-10 setzen dann bekommt er aber nicht die 100 wenn ich until p.x=100 setze.
wie kriege ich das am besten gelöst.

eine möglichkeit wäre sicherlich until p.x <200 zusetzen und dann mit einer weitere schleife mit m=-1 auf 100 runterlaufen zu lassen. aber es hängt ja auch immer davon ab an welcher pos. ich den Button anklicke.

Die andere möglichkeit wäre die getcursorPos(p); beim klick zu bestimmen und je nach dem was dichter liegt eine setcursor position zu setzten

Beispiel Mausklick der Cursor befindet sich bei p.x = 657 dann setcursorpos (660,600)

wenn er sich bei p.x = 653 dann setcursorpos (650,600).

Wie kriege ich das am besten umgesetzt.
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 13:18
Habe es jetzt so gelöst

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
p:TPoint;
begin
edit1.Text:=''; //zur Kontrolle
edit1.Repaint;
m:=0;
repeat
getcursorPos(p);
SetCursorPos(p.x+m, p.y);
m:=-10;
sleep(10);
until p.x<120;
if p.x<120 then
getcursorPos(p);
m:=0;
repeat
getcursorPos(p);
SetCursorPos(p.x+m, p.y);
m:=-1;
sleep(10);
until p.x=100;
edit1.Text:=inttostr(p.X); //Zur Kontrolle
end;
hat noch jemand einen Vorschlag ???
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 13:50
Ja, 2: rücke mal vernünftig ein, damit wir das hier auch nachvollziehen können, und teste den Code mal mit der initialen Maus-Koordinate von z.B. X: 90 und Y:50.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#8

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 14:23
Man kann das auch dynamisch machen:

Delphi-Quellcode:
procedure TForm1.Button12Click(Sender: TObject);
var
p:TPoint; i, d:Integer;
begin
Memo1.clear;
d:=800 div 20; //800 Wegpunkte - nur Beispiel, kann man auch berechnen...
for i := 1 to d do
BEGIN
getcursorPos(p); Memo1.lines.add(inttostr(p.X));
SetCursorPos(p.x-(i div 2), p.y);
sleep(20);
END;

for i := d downto 1 do
BEGIN
getcursorPos(p); Memo1.lines.add(inttostr(p.X));
SetCursorPos(p.x-(i div 2), p.y);
sleep(20);
END;
edit1.Text:=inttostr(p.X); //Zur Kontrolle
end;

Geändert von hathor (29. Nov 2013 um 15:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 14:28
Nicht, wenn es eine globale Variable ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#10

AW: Mouse Move to (x,y) Bewegung sehen

  Alt 29. Nov 2013, 15:17
Eine globale Varable m wird in dieser Procedure nicht gebraucht.
  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 00:17 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