![]() |
Problem mit MouseMove
Hallo Freunde,
ich habe mal wieder ein Problem. In meinem Programm habe ich ein TImage auf dem ich nun schon Punkte setzen kann mit MouseDown. Nun will ich aber diesen die Position des Punktes veränder, dazu dachte ich das ich den bestimme ob der Punkt ausgewählt ist (also selected), wenn ja soll er den Punkt so lange der Maus hinterlaufen bis ich ihn wieder DeSelecte. Ich hab mir das ganze mit MouseMove gedacht, aber irgedwie klappt das nicht, der Punkt bewegt sich nicht um einen Pixel.
Delphi-Quellcode:
Kann mir einer sagen was da Falsch ist?
procedure TFormEditor.TheImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var i : integer; begin for i := 0 to List.Count - 1 do if (List.GetItem(i) is TMPoint) then if TMPoint(List.GetItem(i)).Selected then begin while TMPoint(List.GetItem(i)).Selected do // Schleife damit der Punkt der Maus folgt!!!!??? TMPoint(List.GetItem(i)).ResetPos(X, Y); TMPoint(List.GetItem(i)).Paint; end; RefreshStatistic; end; |
Re: Problem mit MouseMove
Was ist List, was ist TMPoint?
[Eidt]Wobei der Fehler denke ich eher darin liegt, dass die Schleife nie verlassen wird, somit nicht zur Messageschleife zurückgekehrt wird und damit auch keine neuen Mausevents geliefert werden. |
Re: Problem mit MouseMove
List ist eine Liste in der TMPoints gespeichert sind, die wiederum Die Punkte auf dem Image darstellen.
Soll ich soll ich den die schleife sonst verlassen? |
Re: Problem mit MouseMove
Zitat:
|
Re: Problem mit MouseMove
Ok, ich werde das mal ausprobieren.
|
Re: Problem mit MouseMove
Ich habe das jetzt so zu stehen, also ohne Schleife:
Delphi-Quellcode:
Und es geht trozdem nicht, der Punkt kommt einfach nicht aus dem knick? Ist vielleicht das "live-zeichnen" auf dem Image verboten.
procedure TFormEditor.TheImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var i : integer; begin for i := 0 to List.Count - 1 do if (List.GetItem(i) is TMPoint) then if TMPoint(List.GetItem(i)).Selected then begin TMPoint(List.GetItem(i)).ResetPos(X, Y); TMPoint(List.GetItem(i)).Paint; end; RefreshStatistic; end; Hab ich das eigentlich Richtig verstanden? MouseMove, MouseDown, MouseLeave, ... das sind alles reservieter Methoden und wenn ich die einfach an den Namen des Objektes hänge führt er die Mouse-Methoden aus. Ich habe mal in das TImage geschaut und dor nur OnMouseMove, OnMouseDown gefunden. Bei meiner TheImageMouseDown-Methode funktioniert alles, aber bei dieser hier (TheImageMouseMove) nicht. Kann mich einer aufklären? |
Re: Problem mit MouseMove
Nein, so was wie du dir "reservieter Methoden" vorstellst gibt es nicht.
Die Eventmethoden werden dem Objekt als Zeiger angewiesen, entweder im Objektinspektor oder Programmgesteuert: TheImage.OnMouseMove := TheImageMouseMove; Der Name der Methode ist dabei egal, aber die Parameter müssen stimmen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz