![]() |
Problem mit Drag Drob
Hallo, :hi:
ich möchte von einer tfilelist in eine listbox schieben wie kan ich das machen. ich nur wie ich von listbox zu listbox schiebe .
Delphi-Quellcode:
wo muss man was ändern wen es den geht
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); begin Accept := Source is TListBox; end; procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var i,i2 : integer; lbSource,lbSender : TListBox; begin lbSource := Source as TListBox; lbSender := Sender as TListbox; //Drag and drop der gleichen LB verhindern if lbSource <> lbSender then begin //items kopieren //du löschst items, deswegen müßte die for Schleife rückwärts zählen, dann würden die itmes aber spiegelverkehrt hinzugefügt //ich nehm da lieber eine while schleife, eine for-schleife macht dir das leben schwerer (finde ich) i:=0; while i<=lbSource.count-1 do //hier muß Source stehen, du willst von source nach Sender! begin if lbSource.Selected [i] then begin //Variante 1 = hinzufügen //lbSender.Items.Add(lbSource.Items[i]); //Variante 2 = Einfügen i2:=lbSender.ItemAtPos(point(x,y),false); lbSender.Items.insert(i2,lbSource.Items[i]); //Einträge in sourceListbox löschen lbSource.Items.Delete (i); continue; //inc(i) "überspringen" und mit gleichem item (wegen Löschung) weiterarbeiten end; inc(i); end; end; end; procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button = mbLeft then with Sender as TListBox do begin if ItemAtPos (Point (x,y),true) >= 0 then BeginDrag (false); end; end; gruss bernd |
Re: Problem mit Drag Drob
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin FileListBox1.DragMode := dmAutomatic; end; procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source is TFileListBox; end; procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var I, P: Integer; begin P := (Sender as TListBox).ItemAtPos(Point(X, Y), False); with Source as TFileListBox do for I := Items.Count - 1 downto 0 do if Selected[I] then (Sender as TListBox).Items.Insert(P, Items.Strings[I]); end; |
Re: Problem mit Drag Drob
halo,
vielen dank für deine hilfe. :bounce1: gruss bernd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 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