Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 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