Autor Beitrag
Tobinator
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 01.02.10 23:14 
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:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 02.02.10 22:09 
keiner eine Idee??
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Di 02.02.10 22:18 
Setz den Zweiten button doch selbst.
Sprich wenn der 1 Button verschoben ist, setzt die die Position des Zweiten in der relation zum ersten.
Ist genau wie das, was du willst, nur dass se nicht beide gleichzeitig sichtbar verschoben werden ;x

//Edit
Crosspost: Delphipraxis
Tobinator Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 02.02.10 22:56 

_________________
PROGRAMMER: A device for converting coffee into software.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Tobinator Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 02.02.10 23:10 
Ok, ich schreibs in den andern auch mal dazu
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19284
Erhaltene Danke: 1742

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 14.02.10 19:31 
Hier findest du zu dem Thema einiges:
delphi.about.com/lib...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.