AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit MouseMove

Ein Thema von daredd · begonnen am 18. Mär 2009 · letzter Beitrag vom 19. Mär 2009
Antwort Antwort
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#1

Problem mit MouseMove

  Alt 18. Mär 2009, 21:34
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:
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;
Kann mir einer sagen was da Falsch ist?
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#2

Re: Problem mit MouseMove

  Alt 18. Mär 2009, 22:23
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.
Man kann einen Barbier definieren als einen, der alle diejenigen rasiert, und nur diejenigen, die sich nicht selbst rasieren.
Rasiert sich der Barbier?
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#3

Re: Problem mit MouseMove

  Alt 18. Mär 2009, 22:26
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?
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#4

Re: Problem mit MouseMove

  Alt 19. Mär 2009, 08:05
Zitat von daredd:
Soll ich soll ich den die schleife sonst verlassen?
Die Schleife ist hier gar nicht notwendig (eher kontraproduktiv, wie man sieht)! Der MouseMove Event wird bei jeder Mausbewegung aufgerufen und nur dann musst du ja auf die Positionsänderung reagieren. Also lass die while Schleife weg und schau mal, was als nächstes nicht funktioniert...
Uwe Raabe
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#5

Re: Problem mit MouseMove

  Alt 19. Mär 2009, 09:38
Ok, ich werde das mal ausprobieren.
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#6

Re: Problem mit MouseMove

  Alt 19. Mär 2009, 09:50
Ich habe das jetzt so zu stehen, also ohne Schleife:
Delphi-Quellcode:
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;
Und es geht trozdem nicht, der Punkt kommt einfach nicht aus dem knick? Ist vielleicht das "live-zeichnen" auf dem Image verboten.

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?
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem mit MouseMove

  Alt 19. Mär 2009, 16:32
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz