Einzelnen Beitrag anzeigen

Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#1

Listview items verschieben

  Alt 2. Jul 2007, 11:29
Ich habe folgendes Problem,
ich möchte die markierten Items einer listview mit "strg+Pfeil auf" und "strg+Pfeil" runter verschieben.
Das hochschieben der Items funktioniert ohne Probleme, jedoch das herunterschieben nicht, die Items werden aus mir unerklärlichen gründen nicht verschoben.

Delphi-Quellcode:
function MoveListViewItem(listView: TListView; ItemFrom, ItemTo: Word): Boolean;
var Source, Target: TListItem;
begin
  Result := False;
  listview.Items.BeginUpdate;
  try
    Source := listview.Items[ItemFrom];
    Target := listview.Items.Insert(ItemTo);
    Target.Assign(Source);
    Source.Free;
    Result := True;
  finally
    listview.Items.EndUpdate;
  end;
end;

procedure TForm1.items_nach_oben;
var i:integer;
begin

  for i:=0 to lv1.Items.Count-1 do
  begin
    if lv1.Items.Item[i].Selected then
    begin
      if i<>0 then
      begin
        MoveListViewItem(lv1,i,i-1);
        lv1.Items.Item[i-1].Selected:=true;
      end;
    end;
  end;
end;

procedure TForm1.items_nach_unten;
var i:integer;
begin

  for i:=0 to lv1.Items.Count-1 do
  begin
    if lv1.Items.Item[i].Selected then
    begin
      if i<lv1.Items.Count-1 then
      begin
        MoveListViewItem(lv1,i,i+1);
        lv1.Items.Item[i+1].Selected:=true;
      end;
    end;
  end;
end;



Aufruf:
  if key=38 then if KeyPressed(vk_Control) then items_nach_oben;
  if key=40 then if KeyPressed(vk_Control) then items_nach_unten;
  Mit Zitat antworten Zitat