Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mixung zwischen TreeView und Listview gesucht (https://www.delphipraxis.net/98312-mixung-zwischen-treeview-und-listview-gesucht.html)

gsh 24. Aug 2007 23:10


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.

generic 24. Aug 2007 23:20

Re: Mixung zwischen TreeView und Listview gesucht
 
virtualstringtree von mike lischke.

gsh 24. Aug 2007 23:38

Re: Mixung zwischen TreeView und Listview gesucht
 
Kann ich die frei in meinen Programm benutzen?

Dezipaitor 25. Aug 2007 01:16

Re: Mixung zwischen TreeView und Listview gesucht
 
Zitat:

Zitat von gsh
Kann ich die frei in meinen Programm benutzen?

Ja, da VirtualXXXTree unter der GPLL oder MPL liegt. Nach denen kannste mit deinem erstellten Programm auch Geld verdienen.
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.

gsh 25. Aug 2007 01:24

Re: Mixung zwischen TreeView und Listview gesucht
 
Zitat:

Zitat von Dezipaitor
Ja, da VirtualXXXTree unter der GPL oder MPL liegt. Nach denen kannste mit deinem erstellten Programm auch Geld verdienen.
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.

Des versteht ich jetzt nicht ganz. Wie meinst du des des ich nicht wirklich frei bin?

Dezipaitor 25. Aug 2007 12:22

Re: Mixung zwischen TreeView und Listview gesucht
 
Zitat:

Zitat von gsh
Zitat:

Zitat von Dezipaitor
Ja, da VirtualXXXTree unter der GPL oder MPL liegt. Nach denen kannste mit deinem erstellten Programm auch Geld verdienen.
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.

Des versteht ich jetzt nicht ganz. Wie meinst du des des ich nicht wirklich frei bin?

Frei würde bedeuten, dass du alles mit dem Quelltext machen könntest. Da du jedoch nicht der Urheber bist, kannst du nicht darüber bestimmen.
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).

gsh 25. Aug 2007 13:08

Re: Mixung zwischen TreeView und Listview gesucht
 
Zitat:

Zitat von Dezipaitor
Frei würde bedeuten, dass du alles mit dem Quelltext machen könntest. Da du jedoch nicht der Urheber bist, kannst du nicht darüber bestimmen.
Der eigentliche Urheber gibt dir jedoch das Recht, die Komponente zu nutzen, ohne dass du was zahlen müsstest - auch für kommerzielle SW.

ok des klingt gut
Mehr wollte ich nicht wissen danke :zwinker:

gsh 25. Aug 2007 21:18

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 :(

Olli 25. Aug 2007 21:22

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.

gsh 25. Aug 2007 21:26

Re: Mixung zwischen TreeView und Listview gesucht
 
hmm jo hab ich eh versucht ... aber nun gut ich werds schon schaffen

Hawkeye219 25. Aug 2007 21:30

Re: Mixung zwischen TreeView und Listview gesucht
 
Hi Alex,

hier ist eine kleine Hilfe für den Einstieg: klick.

Gruß Hawkeye

Dezipaitor 25. Aug 2007 21:48

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.

gsh 25. Aug 2007 22:02

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

Olli 25. Aug 2007 23:20

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 ;)

Dezipaitor 25. Aug 2007 23:29

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.

gsh 26. Aug 2007 01:00

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

semo 26. Aug 2007 01:40

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.

gsh 26. Aug 2007 09:12

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

semo 26. Aug 2007 09:32

Re: Mixung zwischen TreeView und Listview gesucht
 
ist doch auch kein problem: guck dir mal OnInitChildren an

gsh 26. Aug 2007 09:53

Re: Mixung zwischen TreeView und Listview gesucht
 
Aber mit AddChild find ich des um einiges einfacher

semo 26. Aug 2007 09:56

Re: Mixung zwischen TreeView und Listview gesucht
 
musst du halt wissen.

im quellcode steht aber explizit drin, dass

Zitat:

// Adds a new node to the given parent node. This is simply done by increasing the child count of the
// parent node. If Parent is nil then the new node is added as (last) top level node.
// UserData can be used to set the first 4 bytes of the user data area to an initial value which can be used
// in OnInitNode and will also cause to trigger the OnFreeNode event (if <> nil) even if the node is not yet
// "officially" initialized.
// AddChild is a compatibility method and will implicitly validate the parent node. This is however
// against the virtual paradigm and hence I dissuade from its usage.

gsh 26. Aug 2007 10:19

Re: Mixung zwischen TreeView und Listview gesucht
 
ahm aha ... mein englisch ist nicht so gut :stupid:
Versteh ich nicht ganz

semo 26. Aug 2007 10:48

Re: Mixung zwischen TreeView und Listview gesucht
 
interessant sind die beiden zeilen:

Zitat:

// AddChild is a compatibility method and will implicitly validate the parent node. This is however
// against the virtual paradigm and hence I dissuade from its usage.
AddChild ist eine Kompatibilitätsmethode und validiert implizit den Vaterknoten.
Dies ist gegen das virtuelle Paradigma und daher rate ich von der Nutzung ab.

So oder so ähnlich lautet das im Deutschen dann ;-)

gsh 26. Aug 2007 10:57

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:

Olli 26. Aug 2007 15:12

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.

gsh 26. Aug 2007 16:15

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