Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Virtual TreeView, pro SubItem verschiedene Spalten (https://www.delphipraxis.net/102969-virtual-treeview-pro-subitem-verschiedene-spalten.html)

hoika 7. Nov 2007 17:05


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

dominikkv 7. Nov 2007 17:16

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.

hoika 7. Nov 2007 18:06

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

Hawkeye219 7. Nov 2007 19:15

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

hoika 7. Nov 2007 19:36

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

OG Karotte 7. Nov 2007 20:05

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.

sh17 8. Nov 2007 08:06

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.

generic 8. Nov 2007 08:49

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.

hoika 8. Nov 2007 09:33

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

stifflersmom 8. Nov 2007 09:44

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:
 Type
    Ptreedbdata = ^TTreeDbData;
    TTreeDbdata = Record
      categories_id     : Integer;
      parent_id         : Integer;
      Caption           : String;
      report_ID         : Integer;
      Icon_Index        : Integer;
      ReportFile        : String;
      Faktura           : Integer;
    end;
Pass Dir die Struktur einfach zusammen wie es Dir gefällt.

Und im GetText-Ereignis des VS kannst Du dann dementsprechend reagieren
und die Texte anpassen
Delphi-Quellcode:
var
  Data: PTreeDBData;
begin
  Data:=ReportTree.GetNodeData(Node);
  If Data.Faktura = 1 Then Celltext := 'Rechnung'
  ... bla bla
end;
Und ähnlich könntest Du beim Zeichnen der Nodes vorgehen.

Moin


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz