Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi mehrere Objekte mit perform verschieben (https://www.delphipraxis.net/147082-mehrere-objekte-mit-perform-verschieben.html)

Tobinator 1. Feb 2010 15:50


mehrere Objekte mit perform verschieben
 
Hi,

ich möchte mir einen kleinen Reportdesigner bauen, auf dem ich unter anderem mehrere Objekte auswählen und verschieben kann. Ich kann schon mehrere Objekte auswählen und einzelne verschieben. Mit mehreren klappts aber noch nicht. Ich hab mit auf einem Testformular mal zwei Buttons hingepackt und wollte die beide verschieben.

Mein Versuch:

Delphi-Quellcode:
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  ReleaseCapture;
  if ssleft in Shift then
  begin
    Button1.Perform(WM_SYSCOMMAND,$F012,0);
    Button2.Perform(WM_SYSCOMMAND,$F012,0);
  end;
end;
Da wird aber nur der erste Button verschoben. Kann mir einer helfen??

PS: Ich will am ende nicht nur einfach Button2 um die selbe Differenz wie Button1 verschieben, weil ich ja schon wärend dem Verschieben sehen möchte, wo die Objete landen.

Danke schonmal :D

Tobinator 2. Feb 2010 20:10

Re: mehrere Objekte mit perform verschieben
 
keiner eine Idee??

SirThornberry 2. Feb 2010 20:12

Re: mehrere Objekte mit perform verschieben
 
mit Perform wirst du da schlechte Chancen haben da Perform erst zurück kehrt wenn das verschieben abgeschlossen ist (wenn ich mich recht entsinne).

Luckie 2. Feb 2010 20:46

Re: mehrere Objekte mit perform verschieben
 
Ich wäre gar nicht auf die Idee gekommen mit der Methode Perform zu versuchen was zu verschieben. Warum änderst du nicht einfach die Top und Left Eigenschaften?

SirThornberry 2. Feb 2010 20:51

Re: mehrere Objekte mit perform verschieben
 
Perform hat den Vorteil das es durch Verwendung der Systemmessage die Systemeinstellungen zur Anzeige von Fenstern beim verschieben verwendet. Wenn man einfach die Left und Top Koordinaten ändert, ist der Inhalt der Fenster die ganze Zeit sichtbar selbst wenn im System eingestellt ist das nur die Rahmen der Fenster sichtbar sein sollen.

Tobinator 2. Feb 2010 20:53

Re: mehrere Objekte mit perform verschieben
 
also Top und Left zu verändern ist mir ehrlichgesagt zu aufwendig, aber wenn es nicht anders geht, dann werde ich wohl nicht drum herum kommen.
Kann mir einer erklären (oder einen Link geben) wie Perform funktioniert, also ob man da irgendwie eingreifen kann um die trotzdem so zu verschieben?
Also Top und Left würde ich wirklich nur als letzte Lösung nehmen wollen...

Luckie 2. Feb 2010 20:54

Re: mehrere Objekte mit perform verschieben
 
Zitat:

Zitat von SirThornberry
Perform hat den Vorteil das es durch Verwendung der Systemmessage die Systemeinstellungen zur Anzeige von Fenstern beim verschieben verwendet. Wenn man einfach die Left und Top Koordinaten ändert, ist der Inhalt der Fenster die ganze Zeit sichtbar selbst wenn im System eingestellt ist das nur die Rahmen der Fenster sichtbar sein sollen.

OK, wieder was gelernt. Aber anscheinend hier nicht möglich.

Tobinator 2. Feb 2010 21:14

Re: mehrere Objekte mit perform verschieben
 
ich hab übrigens in anderen Foren die selbe Frage gestellt
Delphiforum
Delphitreff

Also wenn ich ne entgültige Lösung finde werde ich sie überall nochmal posten
:D


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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