AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ein paar Fragen zu TListView

Ein Thema von Opa Knack · begonnen am 11. Apr 2005 · letzter Beitrag vom 11. Apr 2005
 
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, 13: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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