Zitat von
Opa Knack:
Hallo,
ich habe zwar ein paar Lösungen gefunden, wie dies mit anderen Komponenten umgesetzt werden kann, aber rein zum ListView bislang nichts:
die suche zu
listview drag soll wirklich nichts finden
?
Zitat:
1.) Ich möchte gerne die einzelnen Einträge im ListView miteinander austauschbar machen (Drap/Drop).
Listview-dragmode auf dmautomatik und auf die Schnelle (behandelt nur ein selektiertes item, nicht alle):
Delphi-Quellcode:
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
accept:=source is TListView;
end;
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var Src_LV,Dest_LV:TListview;
item,dest_item:TListItem;
index:integer;
begin
if source is Tlistview then
begin
src_lv:=TListView(Source);
dest_lv:=TListView(sender);
if Src_LV.Selected<>nil then
begin
//ganz einfach, nur das selektierte iterm behandeln
//einzzufügende Position bestimmen
item:=Dest_LV.GetItemAt(x,y);
if item<>Nil then
begin
index:=item.Index;
//wenn source=Sender, also das gleich listview, noch die Position anpassen,
if (source=Sender) and (item.index>Src_LV.Selected.index) then
index:=item.Index+1;
dest_item:=Dest_LV.items.Insert(index)
end
else
dest_item:=Dest_LV.items.add;
//inhalt kopieren
dest_item.Assign(Src_LV.Selected);
//und item löschen
Src_LV.DeleteSelected;
end;
end;
end;
Zitat:
Dabei sollen die "Verschiebe"-Aktionen mit einem Event gekoppelt sein, da dieses ListView quasi nur die "vorzeigbare" Version eines StringGrids darstellt. In diesem StringGrid habe ich pro Zeile x Daten, und jede Zeile im StringGrid wird als Item im ListView dargestellt. Es soll also nun folgendes funktionieren:
- Item in Zeile 4 des ListViews wird in Zeile 2 verschoben
- Dabei wird "im Hintergrund" im StringGrid die Zeile 4 in die Zeile 2 verschoben
Wie du in einem grid zeilen austauschst: rows sind Tstrings und die kennen move, von und nach hast du ja anhand der item.index. Obwohl das eher nach einem design-problem aussieht, warum nicht auch ein grid zum auzeigen?
Mfg Frank