Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Eine Orthogonale Linie zeichnen ohne zickzack

  Alt 6. Apr 2009, 23:07
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 ...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat