Farbe der alternierenden Farben in einem Tree View

Farbe der alternierenden Farben in einem Tree View

Beitragvon Socke » 2. Mai 2011, 20:50 Farbe der alternierenden Farben in einem Tree View

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
Socke
Lazarusforum e. V.
 
Beiträge: 2683
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon BeniBela » 2. Mai 2011, 21:21 Re: Farbe der alternierenden Farben in einem Tree View

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,..
BeniBela
 
Beiträge: 263
Registriert: 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4) | 
CPU-Target: 64 Bit
Nach oben

Beitragvon Socke » 3. Mai 2011, 00:29 Re: Farbe der alternierenden Farben in einem Tree View

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
Socke
Lazarusforum e. V.
 
Beiträge: 2683
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon BeniBela » 8. Mai 2011, 20:45 Re: Farbe der alternierenden Farben in einem Tree View

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
BeniBela
 
Beiträge: 263
Registriert: 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4) | 
CPU-Target: 64 Bit
Nach oben

Beitragvon Socke » 8. Mai 2011, 22:46 Re: Farbe der alternierenden Farben in einem Tree View

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
Socke
Lazarusforum e. V.
 
Beiträge: 2683
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Scotty » 9. Mai 2011, 17:33 Re: Farbe der alternierenden Farben in einem Tree View

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;
Scotty
 
Beiträge: 770
Registriert: 4. Mai 2009, 12:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4 | 
CPU-Target: x86_64-linux-qt/gtk2
Nach oben

Beitragvon Socke » 9. Mai 2011, 19:18 Re: Farbe der alternierenden Farben in einem Tree View

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
Socke
Lazarusforum e. V.
 
Beiträge: 2683
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon BeniBela » 9. Mai 2011, 20:18 Re: Farbe der alternierenden Farben in einem Tree View

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
BeniBela
 
Beiträge: 263
Registriert: 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4) | 
CPU-Target: 64 Bit
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried