Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Color im VirtualStringTree (https://www.delphipraxis.net/98108-color-im-virtualstringtree.html)

onkelmehli 21. Aug 2007 15:17


Color im VirtualStringTree
 
Hallo Leute,

vielleicht steh ich gerade neben den Schuhen, aber ich bekomme es nicht hin, die Farbe der Header im VirtualStringTree zu ändern :gruebel:
Mit "Background" funktioniert das ganze nicht ?

Kannn mir jemand helfen ?

Gruß Matthias

Ghostwalker 21. Aug 2007 15:33

Re: Color im VirtualStringTree
 
Die Eigenschaft Colors (bzw. deren Subeinträge) sollten dir weiterhelfen :)

onkelmehli 21. Aug 2007 15:39

Re: Color im VirtualStringTree
 
Hallo Ghostwalker,

diese hatte ich mir auch schon angeschaut, aber keine von denen ändert meine Header-Color.
Muss ich vielleicht noch irgendwo eine "versteckte" Option aktivieren oder so ?

Gruß Matthias

Ghostwalker 21. Aug 2007 15:51

Re: Color im VirtualStringTree
 
Öhm..nicht das ich wüßte. Wenns standardmäßig nicht funzt, könntest du den Header u.U. auch selbst zeichnen (ownerdraw).

Ich hab die Problematik bisher nicht gehabt :)

Evtl. stört die Option ThemeAware auch.

[Edit]

Ein Blick in die Newsgroup hat mir verraten das das nur über OwnerDraw geht. Dazu die Option Ownerdraw für den Header aktivieren und dann das Event "OnAdvancedHeaderDraw" nutzen.

Beispielschnipsel:

Delphi-Quellcode:
PaintInfo.TargetCanvas.Brush.Color := $00A04A44;
If PaintInfo.Column <> nil then
DrawFrameControl(PaintInfo.TargetCanvas.Handle, PaintInfo.PaintRectangle,DFC_BUTTON,DFCS_FLAT or DFCS_ADJUSTRECT);
PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);

OG Karotte 21. Aug 2007 15:58

Re: Color im VirtualStringTree
 
Der HINTERGRUND im Header bezieht sich meines wissens nur auf die ungenutzten Bereiche im Header. Und dies auch nur wenn ThemeAware unter PaintOptions false ist UND unter Header->Style NICHT hsXPStyle ausgewählt ist. Willst Du die Hintergrundfarbe der Header (also der Spaltenüberschriften) ändern musst Du die Funktionen AdvancedHeaderDraw in Verbindung mit HeaderDrawQueryElements nutzen (nicht vergessen ownerdraw zusetzen).

[Edit:] Upps, roter Kasten übersehen. [/Edit]

Aber:

HeaderDrawQueryelements sollte gesetzt werden

Delphi-Quellcode:
procedure TfrmMain.MyVSTHeaderDrawQueryElements(Sender: TVTHeader;
  var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
begin
  Elements := [hpeBackground];
end;
.
.
.
procedure TfrmMain.MyVSTAdvancedHeaderDraw(Sender: TVTHeader;
  var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);

      if (hpeBackground in Elements then
      begin
       
       //z.B. Code von Ghostwalker
      end;
Damit hast Du auch gleich alle Möglichkeiten offen, die Header Deinen eigenen Wünschen (Schriftart /- Stil, Mehrzeilig usw.) anzupassen.

onkelmehli 21. Aug 2007 16:25

Re: Color im VirtualStringTree
 
:hello: funktioniert wunderbar, danke für eure Hilfe !!

Gruß Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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