![]() |
Virtual TreeView, pro SubItem verschiedene Spalten
Hallo #,
jetzt will ich diese Sache mit dem VT endlich mal in Angriff nehmen ;) Aber :( Ich habe folgendes Problem. Der TreeView zeigt in der 1. Ebene Projekte an, pro Projkt ein Item, klar. Klappe ich ein Projekt auf, zeigt er mir Gruppen, z.B. Rechnung (Re), Lieferschein (LS). Klappe ich eine Gruppe auf, erscheinen die eigentlichen Daten (z.B. Re-Nr, LS-Nr). Aber 1 Je nach Gruppe werden verschiedene Daten angezeigt. Bsp: Bei Rechnung nur die Nummer, bei Lieferschein Nr und "Lieferschein zurück), also bei Rechnung 1 Spalte, bei Lieferschein 2 Spalten (nur als Bsp). Ich würde gern bei jeder verschiedenen Gruppe die Header ändern, ebenso die Spaltenanzahl. Das würde dann in etwa so aussehen, wie ein ListView im TreeView. Ich habe mit die descendants angesehen, nix. (auch das nested header ist ja nicht dass, was ich brauche) Zur Not könnte ich ja folgendes machen das erste Item unterhalb der Rechnung ist der Header, der wird dann grau (?), darf nicht auswählbar sein (?). Nur muss ich die Spaltenzahl ändern können ? Über Tabulator "lösen" (?) Wie würdet ich das denn machen? Danke Heiko |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
der ViertualTreeView hat die Eigenschaft .Header welches wieder die Einegnschaft .Columns hat wo du die Anzahl und Beschriftung der Header verändern kannst.
|
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hallo,
korrekt. Aber ich brauche ja nach aufgeklapptem Item verschiedene Header. Wie oben gesagt, bei Lieferschein z.B. 2 Spalten mit Headerbeschriftung, bei Rechnung 1. Sowas wie Subheaders
Delphi-Quellcode:
0815
|-- Rechnung |-- Re.-Nr: <- die Zeile grau, weil Header |-- 0815-01 |-- 0815-02 |- Lieferschein |-- Nr: zurück <- die Zeile grau, weil Header |-- LS_0815_01 ja |-- LS_0815_02 nein so in etwa Heiko |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hallo Heiko,
ich glaube nicht, daß die von dir gewünschte Darstellung mit dem VST direkt zu erreichen ist. Die einzige Möglichkeit besteht vielleicht darin, auf die Unterstützung der Komponente bei der Spaltenanzeige zu verzichten und alle Daten auf der untersten Stufe selbst zu zeichnen. Warum trennst du die Anzeige der Daten nicht? Mit einer Baumanzeige könnte sich der Anwender in der Verzeichnisstruktur bewegen. Wählt er ein Verzeichnis an, das nur noch Blattknoten und keine Gruppenknoten mehr enthält, stellst du alle Blattknoten in einer Listenanzeige dar. Die Listenanzeige kannst du dann für jede Gruppe individuell gestalten. Beide Elemente - Baumanzeige und Listenanzeige - kannst du mit dem VST oder den Standardkomponenten (TTreeView, TListView) realisieren. Eine einzelne Komponente wäre mir wegen der unterschiedlichen Datenstruktur auf der untersten Ebene zu unübersichtlich. Gruß Hawkeye |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hallo,
es geht darum, dass bei ExpandAll eines Projekt-Knotens alle Daten des Projektes angezeigt werden sollen. Es geht also um einen schnellen Überblick, was ist beim Projekt gelaufen. Heiko |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hast Du Dir schonmal 'BeforeCellPaint' angesehen? Dadurch kannst Du extremen Einfluss auf Aussehen und Inhalt der jeweiligen Zelle nehmen. Somit sollte es möglich sein entspr. (Sub)Header unterhalb des jeweiligen Knoten zusetzen.
|
Re: Virtual TreeView, pro SubItem verschiedene Spalten
ggf auch AfterCellPaint, sonst kommt es beim Zeichnen von Grafiken zu Problemen, wenn die Zeile Markiert ist (blauer Balken).
Ansonsten gibt es in VST keine Möglichkeit die Spaltenanzahl je Zeile dynamisch anzupassen. Das gibt das Konzept nicht her. |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Ich meine bei Mike auf der Homepage eine abgeleitete Klasse gesehen die das kann.
Im Namen war etwas mit Subheadern. |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hallo,
du meinst nested header. Dabei wird aber "nur" im oberen Bereich eine zweite Header-Spalte angezeigt. Ich muss aber pto Item verschiedene Header zeigen. Am einfachsten verständlich ist es, sich ein ListView in TreeView vorzustellen. Es würde viell. ja erst mal reichen, wenn die ListItems verschiedene Spalten-Anzahl hätten. Geht ja aber leider auch nicht. Ich will auch das AutoSize benutzen, wenn ich das jetzt alles selber malen müsste ;( Ich befürchte, das geht nur mit dem QuantumGrid, obwohl ich in deren Screenshots und Handbuch auch nichts gesehen habe. Heiko |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Ich glaube, dass es dennoch möglich ist,
das gewünschte Ergebnis zu erreichen. Für den VS legen wir zu Darstellung ja eine eigene Datenstruktur an, und die können wir uns ja nach Belieben zusammenstellen.
Delphi-Quellcode:
Pass Dir die Struktur einfach zusammen wie es Dir gefällt.
Type
Ptreedbdata = ^TTreeDbData; TTreeDbdata = Record categories_id : Integer; parent_id : Integer; Caption : String; report_ID : Integer; Icon_Index : Integer; ReportFile : String; Faktura : Integer; end; Und im GetText-Ereignis des VS kannst Du dann dementsprechend reagieren und die Texte anpassen
Delphi-Quellcode:
Und ähnlich könntest Du beim Zeichnen der Nodes vorgehen.
var
Data: PTreeDBData; begin Data:=ReportTree.GetNodeData(Node); If Data.Faktura = 1 Then Celltext := 'Rechnung' ... bla bla end; Moin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 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