Mausklick
hi,
ICh möchte gern ein Shape bewegen, indem ich es anklicke und es dann dem Mauszeigerfolgt...(nur auffer X-achse) ICh hab mir sowas hier gedacht:
Delphi-Quellcode:
Mein HAuptprobelm ist, wie setz ich den linken Mausbutton "down" ?
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin if TMouseButton(mbleft)= ???? then Shape1.left:=Mouse.CursorPos.X - (Shape1.Width div 2); end; also, wenn er gedrückt ist und man die MAus bewegt, bewegt sich auch das Shape :) ICh hoffe ihr könnt mir wie schon so oft helfen :)... Is wahrscheinlich wieder ganz simple und ich habs übersehn :) Greetz Spike |
Re: Mausklick
Führe eine weitere Variable ein
sagen wie lMouseDown die setzt du in MouseDown auf true und in MouseUp auf false in MouseMove prüfst du ob lMouseDown true ist und führst deine Bewegung aus! |
Re: Mausklick
Nimm ein boolean daher, und setze ihn bei onMouseDown true, und bei onMouseUp false. Nun kannst du onMouseMove diesen abfragen, und gegebenen Falls das Shape bewegen.
gruss, dizzy (*gnnnnnn - zu spät... :roll: *) |
Re: Mausklick
klappt :)...
Nur leider verrutsch mein Shape dann immer... also ich klick es an und kann es mit 5 cm Abstand verschieben.... Wie kann ich das verändern???
Delphi-Quellcode:
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin if I=true then Shape1.left:=Mouse.CursorPos.X - shape1.width div 2; //??? end; |
Re: Mausklick
Delphi-Quellcode:
So ungefähr :gruebel:
// in Klasse
lMouseDown : Boolean; iMouseDownX : Integer; in ShapeMouseDown begin lMouseDown := true; iMouseDownX := X; end; in ShapeMouseUp begin lMouseDown := false; end; in ShapeMouseMove begin if lMouseDown then begin shape1.Left := shape1.Left + x - iMouseDownX; // das + oder kann auch ein - sein ??? iMouseDownX := x; end; end; |
Re: Mausklick
Check ich irgendwie nicht...
ich will ja den Integerwert nicht angeben, der ändert sich doch ständig... So, klappt das irgendwie ansatzweise...nur blinkt dann das Ding wie blöde und taucht auch rechts wieder auf:
Delphi-Quellcode:
//edit...ich glaub ich war wieder mal zu blöd, muss nochma was gucken ;) X is ja Mouse.CursorPos.X..dooh...na ma sehn...
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin if I=true then Shape1.left:=Mouse.CursorPos.X - (Shape1.left-Mouse.CursorPos.X); end; |
Re: Mausklick
Klappt auch nich wirklich besser deine Vers....da blinkt das Ding auch wie hackedicht und zudem taucht es locker zweima auf... :cry:
|
Re: Mausklick
Mit dieser Operation "x - iMouseDownX" rechne ich die Relative Bewegung der Maus aus.
Die brauch ich damit ich weis um wieviel sich das Shape bewegen soll. Das Flackern kommt daher, weil das Shape andauernt neu gezeichnet wird. Das wäre aber ein Neues Thema. Erstmal sollte eins komplett funktionieren. -> Mach es Bitte mal so wie ich es beschrieben habe, vielleicht verstehst du es dann! |
Re: Mausklick
ICh habs so gemacht und hab jetzt zwei flackernde Shapes hier rumfahren...
|
Re: Mausklick
Die klappt die Bewegung jetzt wenigstens einwandfrei?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 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