![]() |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Die Spaltenanzahl bleibt in der Summe aber gleich, je nach Zeile kann er nur einfach ein paar Spalten ohne Inhalt lassen
|
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Zitat:
Moin |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hallo,
genau das ist das Problem. Ich möchte halt verschiedene Inhalte anzeigen, je nach Item, ohne jetzt alles selber zu malen. Ich habe jetzt mal in bisschen probiert mit ProjektNr + Name (ein Text) | Nr | Datum | sonstiges Nr + Datum hat je nach Item verschiedene Bedeutung, bei Rechnung Rechnungs-Nr., bei Lieferschein LS-Nr. usw. So richtig glücklich bin ich aber nicht, weil jetzt alles ganz weit "nach hinten" wandert, z.B. das wichtige "Lieferschein zurück". Deshalb habe ich ja zur Zeit noch den normalen TreeView, dort sind immerhin alle Daten sofort zu sehen (bei grossen Bildschirm ... ;) ) Ein Umstellen auf VT bringt mir da ja nicht viel (Geschwindigkeit, Optik jaja) Heiko |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Zitat:
Delphi-Quellcode:
Und im GetTextEreignis - wie bereits weiter oben erwähnt - befüllst du die Spalten je nach Gruppe
//--Spalte sichtbar
VSTVO.Header.Columns[col].Options := VSTVO.Header.Columns[col].Options+[coVisible]; //--Spalte unsichtbar VSTVO.Header.Columns[col].Options := VSTVO.Header.Columns[col].Options-[coVisible]; //--Kopftext / Breite /Ausrichtung ändern VSTV0.Header.Columns[col].Text := 'Kopttext'; VSTV0.Header.Columns[col].Width := 200; VSTV0.Header.Columns[col].Alignment := taRightJustify; //--VSTVO ist der VirtualStringTree
Delphi-Quellcode:
procedure TFormXYZ.VSTV0GetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var Data: PNodeInfos; begin Data := VSTV0.GetNodeData(Node); if Data.Rechnung then case Column of 1: CellText := Data.RELSNR; //Rechnungs-/LieferscheinNr als Bsp. 2: CellText := ''; //wenn nix drinne stehen soll z.b. ... end else case Column of 1: CellText := Data.RELESNR; //Rechnungs-/LieferscheinNr als Bsp. 2: CellText := Data.BEMERK; //irgendwelche Zusatzinfos ... end; Zitat:
Zitat:
Apropos selber malen: natürlich kannst du je nach 'Zustand' bsp. die Spalte 'Lieferschein zurück' entsprechend einfärben: rot->noch nicht zurück, grün->zurück (nur mal so als Bsp):
Delphi-Quellcode:
Noch 'n Tipp - falls 'übersehen':
procedure TFormXYZ.VSTV0BeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellRect: TRect); var Data: PNodeInfos; begin // -- Beispielcode Data := Sender.GetNodeData(Node); if ((Column=3) and (Data.LieferscheinZurück)) then TargetCanvas.Brush.Color := clGreen else TargetCanvas.Brush.Color := clRed; TargetCanvas.FillRect(CellRect); end; Im OI des VST die Eigenschaft .DefaultText leer lassen (standardText ist 'Node'), somit werden alle Nodes, denen expliziet kein Text zugewiesen wurde, ohne Inhalt dargestellt ;) okay, vllt. ist ja was für dich dabei... |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hm,
viel Code, danke ;) Aber: Was passiert jetzt, wenn ich die Lieferscheine und Rechnungen gleichzeitig aufmache ? Klappt das mit den verschiedenen Spalten dann immer noch ? Mit dem "nicht nutzen" meinte ich, dass solange ich das nicht mit den Spalten drinhabe, ist ein normaler Treeview einfacher / schneller zu programmieren. Heiko |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hallo raiguen,
wo genau setzt du die Spalten auf coVisible oder nicht coVisible ? Heiko |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Moin Heiko :)
Sorry, dass ich mich erst jetzt (wieder) melde... hab mir in den letzten Tagen ne ordentliche steife (Nordsee-)Brise um die Ohren wehen lassen (mein Lieblingsziel ist in der Regel Cuxhaven...aber das nur am Rande)... In meinem Projekt verwende ich den VST sehr gerne zur Darstellung von Daten, weil ich durch die enormen flexiblen Möglichkeiten (okay, man muss sich da ordentlich durchwuseln und viel probieren, da m.E. die mir verfügbaren/auffindbaren Dokumentationen nicht immer erschöpfend sind und die Demos nicht immer das AHA-Erlebnis bringen - aber das nur nebenbei bemerkt) vielfache Gestaltungsmöglichkeiten habe. In einem Modul bspw. werden (vom User editierbare) Vorgabetabellen dargestellt und je nach Art der Tabelle werden bei Auswahl derselben die benötigten Spalten eingeblendet bzw nicht benötigte Spalten ausgeblendet. Von daher kommt es natürlich auf den 'Verwendungs'Zweck an, wann man dieses 'Ereignis' antriggert ;) Hmm, weiss jetzt nicht genau, was du damit meinst, Rechnung und Lieferschein gleichzeitig aufmachen? Ausgehend von deinem Beispiel wären das dann insgesamt drei Spalten (1*Rechnung, 2*Lieferschein) richtig? Somit hast du es ja in der Hand, wann (=was wird angezeigt) welche Spalte(n) sichtbar sein sollen - aber wie gesagt, das ist jetzt nur ins Blaue geraten. Vllt. ist es hilfreich, deine genauen Wünsche/Ziele zu skizzieren... |
Re: Virtual TreeView, pro SubItem verschiedene Spalten
Hallo,
#3 zeigt das doch eigentlich gut an. 1. Ebene Projekt 2. Ebene Dokumenten-Typ (Lieferschein/Rechnung) 3. Ebene einzelne Dokumente (je nach Dokumenttyp verschiedene Daten) Mit "gleichzeitig Anzeigen" meine ich, dass alle Daten des Projektes angezeigt werden (Expand aller Knoten des Projektes). Der Nutzer soll auf einen Blick sehen, welche Lieferschein UND Rechnungen im Projekt sind. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 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