Farbe der alternierenden Farben in einem Tree View

Antworten
Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Farbe der alternierenden Farben in einem Tree View

Beitrag von Socke »

Hallo,
ich möchte unter GTK 2 eine Baumstruktur mit mehren Spalten darstellen. Dazu verwende ich z.Z. VirtualTreeView, da TTreeView maximal eine Spalte enthalten kann.
Als weiteres Feature möchte ich die einzelnen Zeilen mit alternierenden Farben hinterlegen, sofern dies vom aktuellen Theme ermöglicht wird, jedoch habe ich bisher noch keine Möglichkeit gefunden, die verwendete Farbe zu ermitteln.
Bisher habe ich nur die Funktion gtk_tree_view_set_rules_hint() gefunden, mit der man einem GTK-TreeView mitteilen kann, dass dieses mit alternierenden Farben gezeichnet werden soll, falls das Theme dies vorsieht.

Edit: Das ganze wäre ja einfacher, wenn TTreeView auf dem GTK 2-TreeView basieren würde, aber stattdessen zeichnet das alles selbst....
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

BeniBela
Beiträge: 309
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: Farbe der alternierenden Farben in einem Tree View

Beitrag von BeniBela »

Ich habe zwar keine Ahnung vom VirtualTreeView, irgendwie geht das da bestimmt.
Aber ansonsten kannst du auch mein TTreeListView (im Downloadbereich) verwenden, das zeigt von alleine alternierende Farben an,..

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Farbe der alternierenden Farben in einem Tree View

Beitrag von Socke »

BeniBela hat geschrieben:Ich habe zwar keine Ahnung vom VirtualTreeView, irgendwie geht das da bestimmt.

Ja, klar -- indem ich den Hintergrund selbst zeichne. Da muss ich mir nur die Zeilenhöhen berechnen und eine Farbe aussuchen. Letzteres würde ich gerne dem aktuellen Theme delegieren (also dort irgendwo abfragen).
BeniBela hat geschrieben:Aber ansonsten kannst du auch mein TTreeListView (im Downloadbereich) verwenden, das zeigt von alleine alternierende Farben an,..

http://benibela.de/components_en.html#treelistview ist der von dir? Inwiefern verwendest du die Unit Themes für die Header bzw. wie zeichnest du die? Ich gehe mal davon aus, dass du wie in TCustomGrid die alternierende Farbe auch durch den Benutzer definieren lässt...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

BeniBela
Beiträge: 309
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: Farbe der alternierenden Farben in einem Tree View

Beitrag von BeniBela »

Socke hat geschrieben:http://benibela.de/components_en.html#treelistview ist der von dir? Ich gehe mal davon aus, dass du wie in TCustomGrid die alternierende Farbe auch durch den Benutzer definieren lässt...

Ja

Socke hat geschrieben: Inwiefern verwendest du die Unit Themes für die Header bzw. wie zeichnest du die?

Ehrlich gesagt, ignoriert ich die themes völlig...
Die Header sin ein ganz normales Lazarus headercontrol

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Farbe der alternierenden Farben in einem Tree View

Beitrag von Socke »

BeniBela hat geschrieben:
Socke hat geschrieben: Inwiefern verwendest du die Unit Themes für die Header bzw. wie zeichnest du die?

Ehrlich gesagt, ignoriert ich die themes völlig...
Die Header sin ein ganz normales Lazarus headercontrol

Man könnte den ThemeService (Unit Themes) dazu verwenden um die Symbole +/- zu zeichnen; da sind auch noch ein paar andere Konstanten definiert, die für TreeViews interessant sein könnten, aber da brauch ich mehr als fünf Minuten um das zum Laufen zu bringen.

Andere Frage: ist es irgendwie auf die Schnelle möglich, die Scrollbars in deinem TTreeListView nur anzuzeigen, wenn sie auch wirklich benötigt werden?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Farbe der alternierenden Farben in einem Tree View

Beitrag von Scotty »

Socke hat geschrieben:Man könnte den ThemeService (Unit Themes) dazu verwenden um die Symbole +/- zu zeichnen; da sind auch noch ein paar andere Konstanten definiert, die für TreeViews interessant sein könnten, aber da brauch ich mehr als fünf Minuten um das zum Laufen zu bringen.

Zehn Minuten? :mrgreen:
Themes zu benutzen ist recht einfach. Ob dann aber auch alternierende Farben angezeigt werden, wage ich zu bezweifeln.

Socke hat geschrieben:Andere Frage: ist es irgendwie auf die Schnelle möglich, die Scrollbars in deinem TTreeListView nur anzuzeigen, wenn sie auch wirklich benötigt werden?

<TTreeview>.Scrollbars:=ssAutoBoth;

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Farbe der alternierenden Farben in einem Tree View

Beitrag von Socke »

Scotty hat geschrieben:Zehn Minuten? :mrgreen:
Themes zu benutzen ist recht einfach. Ob dann aber auch alternierende Farben angezeigt werden, wage ich zu bezweifeln.

Okay, zehn Minuten für ein Code-Schnipsel, der die Symbole zum Expandieren und Zusammenklappen für TreeViews auf ein beliebigen Canvas zeichnet :P

Scotty hat geschrieben:
Socke hat geschrieben:Andere Frage: ist es irgendwie auf die Schnelle möglich, die Scrollbars in deinem TTreeListView nur anzuzeigen, wenn sie auch wirklich benötigt werden?

<TTreeview>.Scrollbars:=ssAutoBoth;

Dir ist schon klar, dass wir hier von TTreeListView und nicht von TTreeView reden?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

BeniBela
Beiträge: 309
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: Farbe der alternierenden Farben in einem Tree View

Beitrag von BeniBela »

Man könnte den ThemeService (Unit Themes) dazu verwenden um die Symbole +/- zu zeichnen; da sind auch noch ein paar andere Konstanten definiert, die für TreeViews interessant sein könnten, aber da brauch ich mehr als fünf Minuten um das zum Laufen zu bringen.

Kann ich mir mal ansehen, allerding soll die Komponente auch unter Delphi (4) laufen und da gibt es die Unit ja nicht.

Andere Frage: ist es irgendwie auf die Schnelle möglich, die Scrollbars in deinem TTreeListView nur anzuzeigen, wenn sie auch wirklich benötigt werden?

Nein.
Du könntest F_HScroll.Enabled durch F_HScroll.Visible ersetzen, aber dann wird vielleicht die Fenstergröße falsch berechnet

Antworten