Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi FMX Listview item bewegen Drag & Drop (https://www.delphipraxis.net/202834-delphi-fmx-listview-item-bewegen-drag-drop.html)

jacky213 12. Dez 2019 16:33

Delphi FMX Listview item bewegen Drag & Drop
 
Hallo,

ich frage mich seit Stunden wie ich einen Item in einer Delphi FMX Listview per Drag & Drop oder per Button nach oben oder nach unten bewegen kann?

Danke

jacky213 15. Dez 2019 22:08

AW: Delphi FMX Listview item bewegen Drag & Drop
 
Schade das niemand eine Antwort für mich parat hatte. bin jedenfalls auf folgende Lösung gekommen:

Item in der Listview hoch:
Delphi-Quellcode:
procedure TfrmMain.upbtnClick(Sender: TObject);
var
  Litem : TListViewItem;
  idx:Integer;
begin
if not Assigned(Listview1.Selected) then Exit;
   idx := Listview1.Selected.Index;
   if idx > 0 then
      try
      Listview1.BeginUpdate;
      Litem := Listview1.Items.Insert(idx-1);
      with TListViewItem(Listview1.Items.Item[idx+1]) do
           begin
           LItem.Objects.FindObjectT<TListItemText>('Titel').Text
                := Objects.FindObjectT<TListItemText> ('Titel').Text;
           // in meinem Fall hatte jedes Listview Item mehrere Objekte
           end;
      Listview1.Items.Delete(idx+1);
      Listview1.ItemIndex := idx-1;
      finally
      Listview1.EndUpdate;
      end;
end;
Item in der Listview runter:
Delphi-Quellcode:
procedure TfrmMain.downbtnClick(Sender: TObject);
var
  Litem : TListViewItem;
  idx:Integer;
begin
if not Assigned(Listview1.Selected) then Exit;
   idx := Listview1.Selected.Index;
   if idx < Listview1.Items.Count-1 then
      try
      Listview1.BeginUpdate;
      Litem := Listview1.Items.Insert(idx+2);
      with TListViewItem(Listview1.Items.Item[idx]) do
           LItem.Objects.FindObjectT<TListItemText>('Titel').Text
                := Objects.FindObjectT<TListItemText> ('Titel').Text;
           end;
      Listview1.Items.Delete(idx);
      Listview1.ItemIndex := idx+1;
      finally
      Listview1.EndUpdate;
      end;
end;
Vielleicht hilft es dem ein oder anderen.


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