VirtualStringTree标头具有“背景”属性,但将其设置为其他颜色不会更改颜色。我怀疑使用Windows主题渲染树。
如何设置颜色?
答案 0 :(得分:3)
您可以使用媒体资源THeader.Background
,但您必须从toThemeAware
中排除TreeOptions.PaintOptions
。这将关闭主题,正如TLama在上面的评论中已经说过的那样。
我建议您使用事件OnAdvancedHeaderDraw
和OnHeaderDrawQueryElements
。 <{1}}必须包含hoOwnerDraw
才能生效。
在Header.Options
中,您将OnHeaderDrawQueryElements
设置为(至少)Elements
,并在[hpeBackground]
中设置自定义绘图。
请参阅此示例(source):
OnAdvancedHeaderDraw
答案 1 :(得分:0)
procedure TfrmDepositDefrayalSingly.vstItemsManuallyHeaderDrawQueryElements(Sender: TVTHeader;
var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
begin
Elements := [hpeBackground];
end;
procedure TfrmDepositDefrayalSingly.vstItemsManuallyAdvancedHeaderDraw(Sender: TVTHeader;
var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);
begin
if hpeBackground in Elements then
begin
PaintInfo.TargetCanvas.Brush.Color := cGlobalVar.BasicColor;
PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);
if Assigned(PaintInfo.Column) then
begin
PaintInfo.TargetCanvas.Brush.Color := clGray;
PaintInfo.TargetCanvas.FrameRect(PaintInfo.PaintRectangle);
end;
end;
end;