in FormMouseMove verwendest du zum Zeichnen dennoch
alten X und Y der Ereignisprozedur und nicht die
neuen Zurückgesetzen
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if strgpressed and keypressed then begin
SetCursorPos(Ortho_korrdinate, Mouse.CursorPos.Y);
Canvas.LineTo(Ortho_korrdinate, Mouse.CursorPos.Y);
end;
end;
oder besser
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if strgpressed and keypressed then begin
SetCursorPos(Ortho_korrdinate, Y);
Canvas.LineTo(Ortho_korrdinate, Y);
end;
end;
ansonsten ... deine Codeformatierung (speziell die Einrückung) ist grauenhaft.
und globale Variablen sind nicht sonderlich gut.
Tipp: verschieb strgpressed, keypressed und Ortho_korrdinate nach Private von TForm1
[add]
bezüglich strgpressed:
schau dir mal FormMouseDown > Shift an
da kannst du es direkt prüfen und mußt nicht FormKeyDown damit behelligen
=False bzw =True würde ich an deiner Stelle auch besser weglassen ... das kann nette Fehler ergeben, was schon zu oft im Forum erklärt wurde, warum ...
Ein Therapeut entspricht 1024 Gigapeut.