Einzelnen Beitrag anzeigen

jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#2

AW: Delphi FMX Listview item bewegen Drag & Drop

  Alt 15. Dez 2019, 22:08
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.
  Mit Zitat antworten Zitat