AGB  ·  Datenschutz  ·  Impressum  







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

SetCursorPos ScreentoClient

Ein Thema von thomas2009 · begonnen am 31. Jan 2009 · letzter Beitrag vom 1. Feb 2009
Antwort Antwort
thomas2009
(Gast)

n/a Beiträge
 
#1

SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 16:12
hallo

Delphi-Quellcode:
var pt: TPoint;
begin
  Pt := Form1.ScreenToClient(Mouse.CursorPos);
  Caption:= IntToStr(Pt.X)+', ' +IntToStr(Pt.Y);
//SetCursorPos(Mouse.CursorPos.X-,Mouse.CursorPos.Y);
end;
Wie kann ich den Cursor auf den Punkt setzen ? (ich verwende Timer )
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 16:15
Na, Pt ist doch Dein Punkt, da dann mit SetCursorPos drauf.
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
Benutzerbild von himitsu
himitsu

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

Re: SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 16:15
am Einfachsten, indem du den gewünschten Punkt per ClientToScreen umrechnest und an den Mauszeiger übergibst.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 16:17
Wobei ich den Code noch nicht ganz verstehe: Mausposition ermitteln und dann dorthin positionieren ?
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
thomas2009
(Gast)

n/a Beiträge
 
#5

Re: SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 16:56
Hier ist ein Beispiel, damit Ihr meine Frage gut versteht
siehe Anhang

in Panel1 OnmouseMove werden die Maus-Position ermittelt :
Delphi-Quellcode:
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var pt: TPoint;
begin
  Pt := Panel1.ScreenToClient(Mouse.CursorPos);
Edit1.Text:=IntToStr(pt.X);
Edit2.Text:=IntToStr(pt.Y);
end;
Nun soll der Timer den Cursor auf einen in die nähe liegenden Punkt positionieren
das ist alles
in dem Beispiel befindet der Cursor in die Koordinaten x=36, y=38

die Aufteilung des Panel sind aber 50 x 50
d.h. der Timer soll den Cursor auf den Punkt 50,50 setzen, da dieser Punkt am näherten ist
Miniaturansicht angehängter Grafiken
screentoclient1_624.jpg  
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 16:58
Sich das nachdenken und experimentieren abnehmen lassen is aber uncool ... ... weil mit ein wenig von beidem kommste sicher auch auf die Lösung.

Tante Edith stellt grad fest, dass deine zweite Problembeschreibung nichts mit der ersten zu tun hat, oder? Weil so klingts jetzt nach einem Logikproblem (Wie finde ich die nächste Stelle für den Cursor) und nicht nach einem Verständnisproblem (wie platziere ich den Cursor).
  Mit Zitat antworten Zitat
thomas2009
(Gast)

n/a Beiträge
 
#7

Re: SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 19:12
Zitat von nuclearping:
bla bla
Das 2. Schreiben ist nur für @DeddyH, der mein Ziel (Frage) nicht gut verstanden hat
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: SetCursorPos ScreentoClient

  Alt 31. Jan 2009, 21:03
Abgesehn davon, daß ich dir die Lösung schon gab...

Wenn du den Mauszeiger starr auf einen Punkt ziehst:
Hast du dir schön überlegt, wie man den Mauszeiger dann da wieder wegbekommt?

Ich hab es in einem Programm so gelöst, daß ich nur das Ereignis/die Behandlung auf meine Punkte zog und den Mauszeiger sich frei bewegen ließ.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#9

Re: SetCursorPos ScreentoClient

  Alt 1. Feb 2009, 08:59
Ich verstehe nicht

//Edit

Es ist nicht möglich den Mauszeiger mit ScreenToClient zu positionieren
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: SetCursorPos ScreentoClient

  Alt 1. Feb 2009, 09:12
Zitat von Praxist:
Ich verstehe nicht
was verstehst du denn nicht?

Delphi-Quellcode:
// Pt = der Punkt im Panel1, wo der Mauszeiger hin soll

Pt := Panel1.ClientToScreen(Pt);
SetCursorPos(Pt.X, Pt.Y);


Ja und wie soll man den Mauszeiger wieder von einem Punkt wegbekommen, wenn er ständig wieder dahin zurückgesetzt wird, sobald man versucht diesen von da wegzubewegen?

einfach mal in 'ner leeren Form einbauen ... und Maus in das Kästchen schieben:
(Tipp, da OnMouseMove zum Glück nicht immer sehr schnell ist ... die Maus ganz schnell bewegen und ihr kommt eventuell wieder raus)
Delphi-Quellcode:
Procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  Var Pt: TPoint;

  Begin
    //Pt := Form1.ScreenToClient(Mouse.CursorPos);
    {}Pt.X := X; // wozu Mouse.CursorPos abfragen,
    {}Pt.Y := Y; // obwohl man die Werte doch schon in X und Y hat?

    Caption := Format('%d:%d', [Pt.X, Pt.Y]);

    If (Pt.X in [100..200]) and (Pt.Y in [50..150]) Then Begin
      Pt.X := 100 + (200 - 100) div 2; // 150
      Pt.Y := 50 + (150 - 50) div 2; // 100
      Pt := Form1.ClientToScreen(Pt);
      SetCursorPos(Pt.X, Pt.Y);
    End;
  End;

Procedure TForm1.FormPaint(Sender: TObject);
  Begin
    Canvas.Pen.Color := clBlack;
    Canvas.Brush.Style := bsClear;
    Canvas.Rectangle(100, 50, 200, 150);
  End;
[add]
Zitat:
Es ist nicht möglich den Mauszeiger mit ScreenToClient zu positionieren
das hab ich auch nicht behauptet, aber damit läßt sich die Position berechnen, welche man SetCursorPos übergibt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:48 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