Einzelnen Beitrag anzeigen

Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Ein paar Fragen zu TListView

  Alt 11. Apr 2005, 14:54
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 Hier im Forum suchenlistview 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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat