Autor Téma: VirtualStringTree - Header - vlastná farba  (Přečteno 1357 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4336
  • Karma: 38
    • Verze Delphi: XE7 professional
VirtualStringTree - Header - vlastná farba
« kdy: 08-04-2016, 15:17:37 »
Použil som toto riešenie
http://stackoverflow.com/questions/32396875/how-to-set-the-color-of-virtualstringtree-header
Ale buď mám všetko v jednej farbe, alebo sú hlavičky v pôvodnom stave a pozadie podľa mňa. Viď prílohy.
Kód: Delphi [Vybrat]
  1. procedure TfrmDepositDefrayalSingly.vstItemsManuallyHeaderDrawQueryElements(Sender: TVTHeader;
  2.   var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
  3. begin
  4. //  if not Assigned(PaintInfo.Column) then -> Zmení sa pozadie, ale nie hlavička
  5.     Elements := [hpeBackground];
  6. end;
  7.  
  8. procedure TfrmDepositDefrayalSingly.vstItemsManuallyAdvancedHeaderDraw(Sender: TVTHeader;
  9.   var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);
  10. begin
  11.   if hpeBackground in Elements then
  12.   begin
  13.     PaintInfo.TargetCanvas.Brush.Color := cGlobalVar.BasicColor;
  14.     PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);
  15.   end;
  16. end;
  17.  
Ako vykresliť (jednoducho) hlavičky? Úplne by mi postačil jednoduchý rámček dookola.
Dajú sa farebne upraviť aj bežce?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4336
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:VirtualStringTree - Header - vlastná farba
« Odpověď #1 kdy: 08-04-2016, 15:24:17 »
Nevšimol som si sbalené príspevky. Tam ešte bolo
http://pastebin.com/59a7X4D1
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4336
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:VirtualStringTree - Header - vlastná farba
« Odpověď #2 kdy: 08-04-2016, 15:50:49 »
Ale narazil som na tieto dva problémy:

// Nepozná Utils
    VirtualTrees.Utils.AlphaBlend(0, Canvas.Handle, Rect, Rect.TopLeft, bmConstantAlphaAndColor,
      BlendValue, ColorToRGB(BlendColor))
     
// VclStyleEnabled je protected
      if (Tree.VclStyleEnabled and (seClient in Tree.StyleElements)) then
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4336
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:VirtualStringTree - Header - vlastná farba
« Odpověď #3 kdy: 08-04-2016, 16:11:42 »

Tak som to skúsil. Procedúra ColorBlend sa nevolá, takže prvý problém nevstupuje do hry. Druhý som eliminoval je vymazaním. Neviem presne čo to znamená.
Ale hlavička je bez akýchkoľvek zmien.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2285
  • Karma: 101
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:VirtualStringTree - Header - vlastná farba
« Odpověď #4 kdy: 09-04-2016, 00:44:43 »
a kdyz v tom vstItemsManuallyAdvancedHeaderDraw

udelas neco jako

Kód: Delphi [Vybrat]
  1.   if hpeBackground in Elements then
  2.   begin
  3.     PaintInfo.TargetCanvas.Brush.Color := cGlobalVar.BasicColor;
  4.     PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);
  5.     PaintInfo.TargetCanvas.Brush.Color := clBlack; // nebo Pen.Color?
  6.     PaintInfo.TargetCanvas.FrameRect(PaintInfo.PaintRectangle);
  7.   end;
  8.  
Embarcadero MVP - Czech republic

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4336
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:VirtualStringTree - Header - vlastná farba
« Odpověď #5 kdy: 09-04-2016, 10:14:34 »
Poor
Rated 1 time
Už to mám 8)
Kód: Delphi [Vybrat]
  1. procedure TfrmDepositDefrayalSingly.vstItemsManuallyHeaderDrawQueryElements(Sender: TVTHeader;
  2.   var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
  3. begin
  4.   Elements := [hpeBackground];
  5. end;
  6.  
  7. procedure TfrmDepositDefrayalSingly.vstItemsManuallyAdvancedHeaderDraw(Sender: TVTHeader;
  8.   var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);
  9. begin
  10.   if hpeBackground in Elements then
  11.   begin
  12.     PaintInfo.TargetCanvas.Brush.Color := cGlobalVar.BasicColor;
  13.     PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);
  14.  
  15.     if Assigned(PaintInfo.Column) then
  16.     begin
  17.       PaintInfo.TargetCanvas.Brush.Color := clGray;
  18.       PaintInfo.TargetCanvas.FrameRect(PaintInfo.PaintRectangle);
  19.     end;
  20.   end;
  21. end;
  22.  
  23.  
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1817
  • Karma: 70
  • SW konzultant
    • Verze Delphi: 2009, Tokyo, Rio
Re:VirtualStringTree - Header - vlastná farba
« Odpověď #6 kdy: 30-01-2019, 23:46:46 »
Aha, takze nakonec neslo o stylovanou, kolorizovanou kresbu. P.S. ten kod z pastebin je ode me :)
I'm a soldier, so don't panic! I know the underground! I like the WTFPL license! No more Google, go duck, go!