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;