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