Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TTreeView + TStringGrid = ?

6 views
Skip to first unread message

Matthias Hanft

unread,
Dec 27, 2021, 12:40:29 PM12/27/21
to
Hallo,

ich bräuchte für eine Anwendung eine Art Kombination aus TreeView und
StringGrid - also man müsste quasi links einen Baum auf- und zuklappen
können, und rechts davon müssten dann beim Aufklappen die zugehörigen
Zeilen (mit irgendwelchen Werten) angezeigt werden, und beim Zuklappen
müssten rechts die zugehörigen Zeilen ausgeblendet werden (und alles
drunter entsprechend hochrutschen).

Falls es die Sache einfacher macht: Eine einzige Spalte rechts würde
voraussichtlich genügen (aber mehrere würden auch nicht schaden) :-)

Das ganze sollte mit Delphi-7-Bordmitteln gehen (denn ich habe schlechte
Erfahrungen damit gemacht, bei einem Umstieg auf einen neuen PC wieder
alle Fremdkomponenten so zu installieren, dass alte Projekte ohne
Anpassung weiter compiliert werden können).

Ich würde das notfalls auch "zu Fuß" programmieren (also beim Auf-
oder Zuklapp-Event des Trees links die Zeilen rechts passend neu
zu befüllen), aber ich fürchte, solche gigantischen Update-Events
im GUI wären so f***ing langsam, dass man nicht sinnvoll damit
arbeiten könnte (probiert hab' ich's allerdings noch nicht) -
denn abgesehen von den Auf- und Zuklapp-Events müsste man ja
auch noch das Scrollen irgendwie synchronisieren, so dass immer
die zugehörigen Zeilen nebeneinander stehen. (Eine Property
"TStringGrid.LineVisible[I: Integer]: Boolean" gibts ja nicht,
oder? Wäre an dieser Stelle nützlich.)

Irgendwelche Tipps? "Anders als wie oben beschrieben zu Fuß geht
es nicht" ist durchaus eine zulässige Antwort - dann werde ich's
halt mal angehen und schauen, wie schnell das ist. Aber vielleicht
weiß ja jemand den entscheidenden Hinweis...

Noch kurz zur Veranschaulichung:

Z.B. "ABC" im TreeView aufgeklappt, rechts daneben das StringGrid
(hier mit einer Spalte):

- ABC 123
DEF 456
GHI 789
+ XYZ 666

und wenn man jetzt "ABC" zuklappt, soll dastehen:

+ ABC 123
+ XYZ 666

Ich habe auch schon drangedacht, die Zahlen direkt mit im Text des
jeweiligen TreeNodes des TreeViews mit unterzubringen (z.B. hinter
einem Steuerzeichen, das in OnCustomDrawItem ausgewertet wird und
dann entsprechend TABs eingefügt werden, damit die Zahlen unter-
einander stehen). Aber sowas ist ja vermutlich ein *noch* langsameres
GUI-Update als ein paar Texte in einem StringGrid zu verschieben?!

Für ein paar Denkanstöße wäre ich sehr dankbar!

Gruß Matthias.

Michael Hoffmann

unread,
Dec 27, 2021, 3:26:22 PM12/27/21
to
Matthias Hanft schrieb am Montag, 27. Dezember 2021 um 18:40:29 UTC+1:
>
> ich bräuchte für eine Anwendung eine Art Kombination aus TreeView und
> StringGrid - also man müsste quasi links einen Baum auf- und zuklappen
> können, und rechts davon müssten dann beim Aufklappen die zugehörigen
> Zeilen (mit irgendwelchen Werten) angezeigt werden, und beim Zuklappen
> müssten rechts die zugehörigen Zeilen ausgeblendet werden (und alles
> drunter entsprechend hochrutschen).
>
Ich weiß nicht, welche Ansprüche du an das StringGrid stellst; ich verwende den VirtualTreeview; der läßt sich extrem schnell neu füllen. Dabei filtere ich die "Zeilen" so, daß nur die gewünschten ausgegeben werden.
Genaugenommen nutze ich dafür 2 VTs: Der eine zeigt den "Baum", der andere das "StringGrid".

> Das ganze sollte mit Delphi-7-Bordmitteln gehen (denn ich habe schlechte
> Erfahrungen damit gemacht, bei einem Umstieg auf einen neuen PC wieder
> alle Fremdkomponenten so zu installieren, dass alte Projekte ohne
> Anpassung weiter compiliert werden können).
>
Uff.
Da würde ich erstens den Aufwand für Lösungen ohne FremdKomponenten gegen den Aufwand setzen, die alle paar Jahre neu zu installieren.

Oder noch besser: Bei mir stecken die Delphi-Versionen in virtuellen Maschinen; die kann ich einfach auf neue Rechner mitnehmen.
Und zu einer Projekt-Version in einer Kopie der VM genau den Stand der Delphi-Installation speichern.
0 new messages