Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mausklick (https://www.delphipraxis.net/16429-mausklick.html)

Spike2k3 16. Feb 2004 22:21


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:
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;
Mein HAuptprobelm ist, wie setz ich den linken Mausbutton "down" ?
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

neolithos 16. Feb 2004 22:47

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!

dizzy 16. Feb 2004 22:48

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: *)

Spike2k3 16. Feb 2004 23:03

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;

neolithos 16. Feb 2004 23:08

Re: Mausklick
 
Delphi-Quellcode:
// 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;
So ungefähr :gruebel:

Spike2k3 16. Feb 2004 23:17

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:
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;
//edit...ich glaub ich war wieder mal zu blöd, muss nochma was gucken ;) X is ja Mouse.CursorPos.X..dooh...na ma sehn...

Spike2k3 16. Feb 2004 23:21

Re: Mausklick
 
Klappt auch nich wirklich besser deine Vers....da blinkt das Ding auch wie hackedicht und zudem taucht es locker zweima auf... :cry:

neolithos 16. Feb 2004 23:22

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!

Spike2k3 16. Feb 2004 23:25

Re: Mausklick
 
ICh habs so gemacht und hab jetzt zwei flackernde Shapes hier rumfahren...

neolithos 16. Feb 2004 23:26

Re: Mausklick
 
Die klappt die Bewegung jetzt wenigstens einwandfrei?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Seite 1 von 2  1 2      

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