Ich versuche, meine Projekte mit einem VirtualStringTree statt einem Listview zu erstellen, wegen der großen Geschwindigkeitsdifferenz. Die Sache ist, selbst nachdem ich durch die Demos gesehen habe, kann ich einfach nicht genau herausfinden, wie ich es als ListView verwenden würde. Das Hinzufügen, Löschen und im Grunde nur das Arbeiten mit ListView-Elementen ist so einfach, aber wenn ich mir die VT anschaue, wird es fast zu kompliziert.
Alles was ich suche, ist ein VT, der wie ein ListView aussieht, mit Unterpunkten etc.
Hier sind einige Routinen, die die ListView verwenden, die ich gerne mit VT benutzen würde (Dies ist nur ein Pseudo-Beispiel:
%Vor%Natürlich, auch die Delete-Funktion, aber da das wie 1 Zeile ist, habe ich nicht gestört: P
Könnte jemand die obigen Beispiele in eine ListView-Stil-VT übersetzen?
Danke!
Das ist im Grunde das, was Sie tun müssen, aber der VirtualStringTree braucht / braucht viele andere Dinge, um das Ganze zu verstehen. Und wenn Sie es einmal verstanden haben, ist das VST einfach und leistungsstark. Die folgende Webseite wird Ihnen helfen: Ссылка
und unten werde ich mehr Code hinzufügen, den ich für eine einfache VST-Log-Anzeige verwende. Ich behalte den ganzen Code im Datamodul, benutze einfach die Prozedur Log, um Informationen anzuzeigen und ändere FormMain.vstLog zu deinem ...
%Vor%...
%Vor%Warum verwenden Sie keine Listenansicht im virtuellen Modus? Das wird richtig aussehen und sich gut anfühlen.
Das Delphistool TListView-Steuerelement ist ein Wrapper um die Windows-Listenansichtskomponente. In der Standardbetriebsart werden Kopien der Listendaten von Ihrer App an die Windows-Steuerung übertragen und dies ist langsam.
Die Alternative dazu ist in der Windows-Terminologie als virtuelle Listenansicht bekannt. Ihre App übergibt die Daten nicht an das Windows-Steuerelement. Wenn das Steuerelement Daten anzeigen muss, fragt es stattdessen Ihre App nur nach den benötigten Daten ab.
Das Delphi TListView-Steuerelement macht virtuelle Listenansichten mithilfe der OwnerData-Eigenschaft verfügbar. Sie müssen Ihren Listenansichtscode etwas umschreiben, aber es ist nicht zu schwer.
Ich biete auch einen Link zu einem anderen Frage hier, die ähnlichen Boden abgedeckt. Seltsamerweise sprach die akzeptierte Antwort für diese Frage über Listenfelder, obwohl die Frage über Listenansichtskontrollen war.
mit VirtualStringTree ist es ein bisschen komplexer als die einfache TListView, aber hier ist ein sehr einfaches Tutorial, das ich ein wenig zurück zur Verwendung von VirtualStringTree erstellt habe ComputerSaysNo 03.01.2011 18:34
Verwenden Sie einfach Ihre normale TListView, aber verwenden Sie sie im virtuellen Modus .
Es ist wirklich einfach:
OwnerData
auf true
OnData
-Ereignishandler. Beispielimplementierung, die eine einfache Liste von 3 Zeilen zeigt:
%Vor%Das ist alles!
Einige Dinge zu beachten:
Holen Sie sich das Paket VT Contributions und überprüfen Sie einige der Nachkommen der virtuellen Zeichenfolge Baum. Das sind da drin. Ich habe sie nicht in Projekten verwendet, aber sie scheinen Virtual String Tree einfacher zu verwenden.
Hier ist mein Einstieg in die Grundlagen:
Ich habe nach der Verwendung von Virtual String Tree festgestellt, dass die einzige Möglichkeit, das Beste daraus zu machen, darin besteht, die init node / child-Funktionen zu implementieren und die Anzahl der Root-Knoten festzulegen, ähnlich wie bei einer Liste Ansicht mit eigentümerschaft: = wahr.
Es ist ziemlich einfach, mit VirtualStringTree Sachen zu erledigen, Sie müssen nur die Funktion get text und die Knotengröße implementieren (legen Sie sie gleich der Größe des Datensatzes fest, den Sie als Daten hinter Ihrem Baum verwenden möchten)
Ich habe festgestellt, dass es fast immer einfacher ist
TVirtualTreeNodeRecordData = record
Data : TVirtualTreeNodeData;
end
und erstellen Sie das Datenobjekt auf den init-Funktionen. Es erstellt die Zeiger für Sie, aber Sie müssen die Objekte freigeben (verwenden Sie erneut einen Rückruf für den Löschknoten).
Tags und Links delphi listview virtualtreeview