gpt4 book ai didi

delphi - 如何在过滤后的 TVirtualStringTree 上制作适当的替代行颜色

转载 作者:行者123 更新时间:2023-12-03 15:36:45 25 4
gpt4 key购买 nike

之前,我使用此VirtualStringTree来显示所有节点,并使用Node.Index来检查OnBeforeCellPaint<内的奇数行和偶数行 事件。

但是当我过滤节点时,我意识到 Node.Index 与用作备用行无关,如下面的屏幕截图所示:

VirtualStringTree alternate color on filtered nodes

有什么想法/解决方案可以解决这个问题吗?

最佳答案

procedure TMainForm.IpTreeBeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect);
begin
if Node.Index mod 2 = 0
then TargetCanvas.Brush.Color := $00F7E6D5
else TargetCanvas.Brush.Color := $00FBF2EA;

if Sender = ipTree then
if IpAddresses[ PVirtualNode( Node ).Index ].Highlighted then
TargetCanvas.Brush.Color := clYellow;

TargetCanvas.FillRect( CellRect );
end;

这是我的代码,这没有考虑子节点。它为每行交替颜色。但是,如果您确实有 child ,则始终可以使用

iLevel := Sender.GetNodeLevel( Node );

如果是偶数,则将所有子节点绘制为与父节点相同的颜色。

关于delphi - 如何在过滤后的 TVirtualStringTree 上制作适当的替代行颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com