Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Drag&Drop zwischen zwei Listboxen
Daniel_100 - Sa 01.02.03 21:49
Titel: Drag&Drop zwischen zwei Listboxen
Hallo!
Ich möchte gerne per Drag&Drop
einen Eintrag von einer Listbox in die andere Listbox kopieren.
Danke
Raphael O. - Sa 01.02.03 22:08
Wenn dus umständlich´machen willst gehts so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| var zeilennummer:Integer;
...
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin zeilennummer:=listbox1.ItemIndex; end;
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin
if (x>listbox2.Left-listbox1.Left) and (x<listbox2.Left-listbox1.left+listbox2.Width) then if (y>listbox2.top-listbox1.Top) and (y<listbox2.top-listbox1.Top+listbox2.height) then listbox2.Items.Add(listbox1.Items[zeilennummer]) ; end; |
funktionieren tuts aber zumindest ;)
Fiji-Fighter
Daniel_100 - Sa 01.02.03 22:42
Danke, es funktioniert.
Aber wie kann ich dabei noch den Cursor wechseln?
Raphael O. - Sa 01.02.03 22:52
beim onmousedown von der listbox :
Quelltext
1:
| screen.cursor:=crhandpoint; |
bei sämtlichen mouseups dann wieder:
Quelltext
1:
| screen.cursor:=crdefault; |
Fiji-Fighter
Delete - Sa 01.02.03 23:05
Wie wäre es hier mit:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then Listbox1.BeginDrag(false); end;
procedure TForm1.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Source is TListbox then Accept := true; end;
procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer); var i : Integer; begin if Source is TListbox And (Listbox1.SelCount > 0) then begin for i := 0 to Listbox1.Items.Count-1 do begin if Listbox1.Selected[i] = true then Listbox2.Items.Add(Listbox1.Items.Strings[i]); end; end; end; |
Raphael O. - Sa 01.02.03 23:10
:schmoll: :schmoll: :schmoll:
ich sag doch meine Lösungen sind (fast) immer umständlich...
aber warum einfach wenns auch komliziert geht???
ich glaube die Quellcodes meiner Programme sind immer 3mal so lang wie die die andere für das gleiche Programm gebraucht hätten :rofl:
Aber vielleicht brauche ich dafür auch nur 1/2 so lang... :lol:
Fiji-Fighter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!