![]() |
Mixung zwischen TreeView und Listview gesucht
Hi Leute
Wie im Titel schon steht suche ich eine Komponente die im Prinzip eine Listview im Report modus ist (also wie im explorer "Name", "Größe", "Typ", ...) aber trotzdem auch wie z.b. bei der TreeView so einen Baum anlegen kann. Also mit dem Plus zum aufklappen und so ... Kennt da jemand eine Kompo? Möglichst eine Delphi standard kompo. |
Re: Mixung zwischen TreeView und Listview gesucht
virtualstringtree von mike lischke.
|
Re: Mixung zwischen TreeView und Listview gesucht
Kann ich die frei in meinen Programm benutzen?
|
Re: Mixung zwischen TreeView und Listview gesucht
Zitat:
![]() Nur frei bist du nicht wirklich. Der Quelltext der Komponente bleibt unter derselben Lizenz. Nicht jedoch dein Quelltext. Ich weiß grad nur nich, was bei Änderungen greift. |
Re: Mixung zwischen TreeView und Listview gesucht
Zitat:
|
Re: Mixung zwischen TreeView und Listview gesucht
Zitat:
Der eigentliche Urheber gibt dir jedoch das Recht, die Komponente zu nutzen, ohne dass du was zahlen müsstest - auch für kommerzielle SW. Wenn du genaueres wissen willst, dann gehe am besten auf die Seite von Lischke und les dir die Lizenz durch. Für Rechtsfragen würde ich dir sowieso einen Anwalt empfehlen, der mit Urheberrecht bei Software bestens vertraut ist (sind nicht alle). |
Re: Mixung zwischen TreeView und Listview gesucht
Zitat:
Mehr wollte ich nicht wissen danke :zwinker: |
Re: Mixung zwischen TreeView und Listview gesucht
Ui die Komponente kann zwar viel aber ist total schwierig zum einstellen
ich schaff es weder ein hintergrund einzustellen oder geschweige den das die kompo wie eine Listview aussieht :( |
Re: Mixung zwischen TreeView und Listview gesucht
Doku lesen hilft.
Es ist korrekt, daß diese Komponente schwer zu handhaben ist, wenn man damit beginnt, aber das bekommt man schnell mit der sehr guten Dokumentation in den Griff. Vielleicht solltest du dir auch erstmal die zahlreichen mitgelieferten Beispiele zur Brust nehmen, die veranschaulichen das Prinzip nämlich ziemlich gut. Nebenbei ist das auch noch Unicode-fähig, was man vom Rest von Delphi auch über ein Jahrzehnt nach NT4 nicht sagen kann. |
Re: Mixung zwischen TreeView und Listview gesucht
hmm jo hab ich eh versucht ... aber nun gut ich werds schon schaffen
|
Re: Mixung zwischen TreeView und Listview gesucht
|
Re: Mixung zwischen TreeView und Listview gesucht
Füge hoVisible in den Header Options ein (entweder im Objektexplorer, oder per Quelltext):
Include(ListView.Header.Options, hoVisible); Unter Header.Options und dann Columns, kriegst du die Headerinhalte. Mit dem Ereignis OnBeforePaint, kannst du Bitmaps oder sonstwas in den ListView Hintergrund zeichnen. Oder benutze die Eigenschaft Background, um direkt ein Bitmap einzufügen. Die Hintergrundfarbe änderst du direkt mit der Eigenschaft Color. Die Inhalte definiert man über ein Record, wobei man für alle Columns einen String verwenden kann. hier für 10 Spalten:
Delphi-Quellcode:
type TMyRecord = record
Column : Array[0...10] of WideString; //und was weiß ich end; Der Rest geht etwas über meine Zeit hinaus. Nur kurz : Man hat mehrere Möglichkeiten : 1. Einträge über Add einzeln einfügen (laaangsam bei vielen Einträgen) Auch Untereinträge gehen so 2. dem ListView sagen, wieviel Einträge das ListView haben soll - über eine CallbackFunktion (glaub OnNewNode) wird dann der Inhalt des jeweiligen Eintrags initialisiert Dasselbe natürlich auch für Untereinträge. |
Re: Mixung zwischen TreeView und Listview gesucht
danke euch beiden
jetzt hab ich wenigstens mal des ding wie bei der Listview des tutorial werd ich mir auch mal durchlesen |
Re: Mixung zwischen TreeView und Listview gesucht
Für mich war damals das gewöhnungsbedürftigste, daß man die Daten eben nur bei Bedarf einfüllt (zweite Methode, siehe Dezipaitor, von oben) innerhalb von OnInitNode ... ansonsten scheint manchmal die Vielfalt der Optionen überwältigend, aber selbst dafür gibt es eine Lösung: ableiten der Klasse und "verstecken" der unwichtigen Details ;)
|
Re: Mixung zwischen TreeView und Listview gesucht
Es gibt auch eine dritte Methode ohne Record.
Diese habe ich erst letztens in einem ListView verwendet, welches Daten aus einer DB darstellt. Da es in Win32API direkt programmiert war, und ich kein VirtualStringTree hatte, war es die schnellste und einzige Methode. Es geht aber auch mit dem VirtualStringTree. Wenn man die Daten schon besitzt, dann muss man erst garkein Record erstellen, sondern bedient sich sofort aus der DB. Es ist nur wichtig, dass man einen Index besitzt. Man setzt einfach die Anazahl der Einträge und übermittelt dann durch OnGetText den Textinhalt. OnGetText gibt den Index und die Spalte an, die gefüllt werden müssen. Der Vorteil davon ist, dass nur die sichtbaren Einträge übermittelst werden müssen - genauso wie bei der zweiten Methode, die ich vorhin beschrieben habe. Aber eben ohne Kopie des Datenbestands. |
Re: Mixung zwischen TreeView und Listview gesucht
Also habs bis jetzt mit einem record gelößt weil es in meinem fall des beste ist
Funktioniert eigentlich schon ganz gut :mrgreen: In der Hilfe steht zwar des ich VST.AddChild(nil); nicht nutzen sollte weil man des irgendwie mit OnInitNode besser lößen kann. Aber ich wüßte nicht ganz genau wie des gehen soll also bleib ich deshalb einfach daweil bei AddChild |
Re: Mixung zwischen TreeView und Listview gesucht
du setzt einfach den rootnodecount des trees auf deine gewünschte anzahl an knoten.
dann kannst du bequem im OnInit Event des einzelnen Knotens deine Werte in den Data Record des Knotens packen. |
Re: Mixung zwischen TreeView und Listview gesucht
hmmm ja des hab ich mir schon gedacht
aber wie kann ich childs erzeugen? oder hat jeder node noch so eine variable drinnen? und vorallem mein hauptproblem des es mit AddChild für mich um einiges leichter geht weil ich des ganze ja aus einer XML datei laden und des alles rekursiv erstellen muss |
Re: Mixung zwischen TreeView und Listview gesucht
ist doch auch kein problem: guck dir mal OnInitChildren an
|
Re: Mixung zwischen TreeView und Listview gesucht
Aber mit AddChild find ich des um einiges einfacher
|
Re: Mixung zwischen TreeView und Listview gesucht
musst du halt wissen.
im quellcode steht aber explizit drin, dass Zitat:
|
Re: Mixung zwischen TreeView und Listview gesucht
ahm aha ... mein englisch ist nicht so gut :stupid:
Versteh ich nicht ganz |
Re: Mixung zwischen TreeView und Listview gesucht
interessant sind die beiden zeilen:
Zitat:
Dies ist gegen das virtuelle Paradigma und daher rate ich von der Nutzung ab. So oder so ähnlich lautet das im Deutschen dann ;-) |
Re: Mixung zwischen TreeView und Listview gesucht
hmm ja nur hätte ich keine idee wie ich des ereigniss bedingt in die VST laden kann ohne mir des alles zwischen zuspeichern da ich ja die XML rekursiv auslese und da brauche ich einfach dieses AddChild :gruebel:
|
Re: Mixung zwischen TreeView und Listview gesucht
Bekommst du denn keinen Parse-Tree für die XML-Zurück? Wäre doch perfekt geeignet. Denn in OnInitChildNode kennst du ja das den Elternknoten, kannst also den Elternknoten "fragen" um den Kindknoten zu ermitteln, der an die aktuelle Position gehört. Der Punkt ist, daß diese Methode die Komponente unheimlich schnell macht.
|
Re: Mixung zwischen TreeView und Listview gesucht
hmm ja ich werds msir mal anschauen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 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