Hab mir dieses Assign mal angeschaut und rausgefunden dass es an folgender Anweisung liegt:
Code:
OldItem.Checked := Selected.Checked;
Hab zwar bis jetzt noch net gerafft wie und wieso des net geht, aber ich hab die prozedur ein bisschen modifiziert und so funkt es jetzt.
Delphi-Quellcode:
{*********************************************************}
{ Einzelne ListView Items nach oben und unten verschieben }
{*********************************************************}
procedure MoveItems(AListView: TListView; Up: Boolean = True);
var
OldItem, NewItem: TListItem;
AIndex: Integer;
ItemChecked: boolean;
begin
Assert(Assigned(AListView));
with AListView do
begin
Items.BeginUpdate;
try
OldItem := TListItem.Create(Items);
try
OldItem.Caption := Selected.Caption;
OldItem.Data := Selected.Data;
OldItem.ImageIndex := Selected.ImageIndex;
OldItem.Indent := Selected.Indent;
OldItem.OverlayIndex := Selected.OverlayIndex;
OldItem.StateIndex := Selected.StateIndex;
OldItem.SubItems := Selected.SubItems;
if Selected.Checked then
ItemChecked := true
else
ItemChecked := false;
if Up then
AIndex := Selected.Index - 1
else
AIndex := Selected.Index + 1;
if not AIndex in [0..Items.Count - 1] then
Exit;
Selected.Delete;
NewItem := Items.Insert(AIndex);
NewItem.Assign(OldItem);
NewItem.Checked := ItemChecked;
Selected := NewItem;
finally
OldItem.Free;
end;
finally
Items.EndUpdate;
end;
end;
end;
Alle meine Entchen...