![]() |
Listview-Einträge vertauscht nach Drag&Drop
Hallo zusammen!
Ich nutze den folgenden Code von den Schweizern:
Delphi-Quellcode:
Anscheinend wird beim
if (Sender = Source) then
with TListView(Sender) do begin DropItem := GetItemAt(X,Y); CurrentItem := Selected; while (CurrentItem <> nil) do begin NextItem := GetNextItem(CurrentItem, SdAll, [IsSelected]); if (DropItem = nil) then DragItem := Items.Add else DragItem := Items.Insert(DropItem.Index); DragItem.Assign(CurrentItem); CurrentItem.Free; CurrentItem := NextItem; end; end;
Delphi-Quellcode:
- im Gegensatz zu dem, was in der Hilfe steht, AUCH der Index kopiert, so dass die durch Drag&Drop vorgenommene Veränderung nicht bzw. falsch übernommen wird.
Assign
Habt Ihr das auch schon mal gehabt!? Gibt's da Workarounds!? Der Index ist ja leider nicht "von Hand" gesetzt werden. Viele Grüße, |
AW: Listview-Einträge vertauscht nach Drag&Drop
Zitat:
Beschreib doch mal konkret das Verhalten, was du erwartest und was du bekommst. |
AW: Listview-Einträge vertauscht nach Drag&Drop
Liste der Anhänge anzeigen (Anzahl: 2)
Anbei mal 2 Bilder:
Habe den 5. Eintrag (E) per Drag&Drop auf den 1. (A) fallen gelassen. Leider dann NICHT die Reihenfolge EABCD, sondern DCBAE! Viele Grüße, |
AW: Listview-Einträge vertauscht nach Drag&Drop
* push *
Hat denn keiner 'ne Idee!? |
AW: Listview-Einträge vertauscht nach Drag&Drop
folgendes funktioniert bei mir ....
Delphi-Quellcode:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls; type TForm3 = class(TForm) ListView1: TListView; procedure ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure ListView1DragDrop(Sender, Source: TObject; X, Y: Integer); procedure ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form3: TForm3; implementation {$R *.dfm} procedure TForm3.FormCreate(Sender: TObject); begin ReportMemoryLeaksOnShutDown := true; end; procedure TForm3.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer); var li:TListItem; begin li:= TListItem.Create(ListView1.Items); li.Assign(ListView1.DropTarget); ListView1.DropTarget.Assign((ListView1.Items[ListView1.Itemindex])); ListView1.Items[ListView1.Itemindex].Assign(li); li.Free; end; procedure TForm3.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source=Sender; end; procedure TForm3.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button=mbLeft then ListView1.BeginDrag(false); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz