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 Problem mit Drag Drob (https://www.delphipraxis.net/42710-problem-mit-drag-drob.html)

Bernd29bln 22. Mär 2005 23:05


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:
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;
wo muss man was ändern wen es den geht

gruss bernd

Sprint 23. Mär 2005 10:51

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;

Bernd29bln 28. Mär 2005 13:07

Re: Problem mit Drag Drob
 
halo,

vielen dank für deine hilfe.

:bounce1: gruss bernd


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