Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: ListView Icon vertauschen / verschieben

  Alt 12. Mär 2006, 15:31
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;
  Mit Zitat antworten Zitat