Hallo Doreen
Zitat von
delphinia:
Alles was ich bis jetzt habe - was aber nicht richtig funktioniert - ist das *nicht schimpfen für diesen Müll*
Der Ansatz ist doch nicht schlecht. Ich sehe, dass du dich bemüht hast und das zählt, du zeigst Eigeninitiative. Da schimpft garantiert keiner.
Ich habe es schnell so zusammengebastelt und bei mir funktioniert es ganz gut:
Delphi-Quellcode:
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
StartItem, TargetItem: TListItem; // Start-/Ziel-Item
TempImgIndex: Integer; // ImageIndex temporär speichern
begin
if not (Sender = Source) then
Exit;
StartItem := ListView1.Selected;
TargetItem := ListView1.GetItemAt(X, Y);
// Indizes vertauschen
TempImgIndex := TargetItem.ImageIndex;
TargetItem.ImageIndex := StartItem.ImageIndex;
StartItem.ImageIndex := TempImgIndex;
// Falls ViewStyle auf "vsIcon" oder "vsSmallIcon" gesetzt ist,
// ist das zu empfehlen (s. marabus Beitrag)
ListView1.Arrange(arDefault);
end;
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Sender = Source)
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.DragMode := dmAutomatic;
end;