Entwickler-Ecke
Multimedia / Grafik - mehrere Objekte mit perform verschieben
Tobinator - Mo 01.02.10 23:14
Titel: mehrere Objekte mit perform verschieben
Hi,
ich hoffe ich bin hier richtig... Ich habe folgendes Problem:
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-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| 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 - Di 02.02.10 22:09
keiner eine Idee??
Tobinator - Di 02.02.10 22:47
sry wegen dem Crosspost, aber ich war ziemlich verzweifelt und es hat ja keiner geantwortet.
Das nachträgliche verschieben wollte ich ja ebend nicht, ich wills ja schon wärend dem Verschieben sehen. Genau das ist ja mein Problem. Und alles selber machen (also left und top nach jedem mousemove neu setzen) wollte ich nach möglichkeit auch nicht. Gibts da keine andere möglichkeit, also von mir auch auch ohne Perform aber nach möglichkeit auhc nicht zu aufwendig.
elundril - Di 02.02.10 23:07
crossposts sind nix schlimmes aber bitte halt immer dazuschreiben. Dann rätseln nicht jeweils 800 personen untereinander. sonder 2400 miteinander ;) wennst verstehst was ich meine.
lg elundril
Tobinator - Di 02.02.10 23:10
Ok, ich schreibs in den andern auch mal dazu
Niko S. - Di 02.02.10 23:57
Naja der eine sagte ja bereits, es funktioniert nicht mit perform, da es erst los lässt, wenn du los lässt.
Also musst du das wohl selbst programmieren.
Einfach beim "MouseDown" die derzeitigen x/y pos merken und dann beim move die differenz abziehen und die buttons verschieben. Beim mouse up lässt du das ganze dann wieder los.
jaenicke - So 14.02.10 19:31
Hier findest du zu dem Thema einiges:
http://delphi.about.com/library/weekly/aa102505a.htm
Da gehts jetzt nur um einzelne Komponenten, aber das lässt sich ja ausweiten. Idee: Beim Markieren eine Liste der Komponenten erstellen und dann alle in der Liste verschieben, egal welche angefasst wurde beim Verschieben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!