Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Objekte verschieben (https://www.delphipraxis.net/102591-objekte-verschieben.html)

cRayZo 31. Okt 2007 16:28


Objekte verschieben
 
Hi ich habe eine Frage bzgl. dem verschieben von Objekten.
Ich möchte ein Programm schreiben, indem eine checkbox, wenn sie checked=true ist, der Maus folgt (solange diese im Panel ist, in dem sich die checkbox befindet).
Wenn ich die Checkbox wieder deaktiviere, soll die checkbox dort bleiben, wo sie zuletzt war.

Ich habe das so versucht aber klappt überhaupt nicht:
Delphi-Quellcode:
global: dragaktiv:Boolean;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
CursorPos:TPoint;
begin
if Dragaktiv=True then begin
GetCursorPos(CursorPos);
Centercheck.Left:=Cursorpos.X; Centercheck.Top:=Cursorpos.Y;
end;
end;

procedure TForm1.CenterCheckClick(Sender: TObject);
begin
if Centercheck.Checked=False then Dragaktiv:=True;
else Dragaktiv:=False;
end;
Problemansatz: was ich denke, ist, dass die Funktion GetCursorPos die Position des Totalen Bildschirms angibt, der Left bzw Top von der CHeckbox aber nur im Panel Funktioniert..nur ich habe keine Ahnung wie ich das ändern kann

Neutral General 31. Okt 2007 16:29

Re: Objekte verschieben
 
Hi,

Du bekommst in den Parametern des MouseMove Ereignisses die relativen X und Y Werte ;)

Gruß
Neutral General

cRayZo 31. Okt 2007 16:36

Re: Objekte verschieben
 
hm okay und das heißt?.. :idea:

(sprich ich weiß nicht wie ich das ändern soll^^)

Neutral General 31. Okt 2007 16:38

Re: Objekte verschieben
 
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X {1},
  Y {2}: Integer);
begin
  if Dragaktiv then // besser als "Dragaktive = true"
  begin
    Centercheck.Left:= X {1};
    Centercheck.Top := Y {2};
  end
end;
Gruß
Neutral General

cRayZo 31. Okt 2007 16:51

Re: Objekte verschieben
 
okay also die checkbox bewegt sich immerhin schonmal mit ;) thx

PROBLEM aber:

Sobald mein Mauscursor in den Panel kommt, indem die Checkbox ist (also sobald die maus nichtmehr den normalen TForm untergrund hat) bewegt sich die checkbox nicht mehr, obwohl sie es genau dann tun sollte^^

Neutral General 31. Okt 2007 17:21

Re: Objekte verschieben
 
Dann musst du das MouseMove Event des Panels benutzen;)

cRayZo 31. Okt 2007 17:48

Re: Objekte verschieben
 
klingt logisch, ist logisch und funktioniert sogar :D thx :thumb:

und wo wir gleich dabei sind: das mit der checkbox ist iwie blöd, wenn ich das ganze so machen will, dass das Objekt nur dann der Maus folgt, wenn ich sagen wir mal "shift" gedrück habe?

schon n bisschen rumgespiel, aber das geht nicht..
hat da Irgendjemand eine Idee???


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 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-2025 by Thomas Breitkreuz