怎么将一个treeview中满足条件的结点的字体变成另外的颜色 ( 积分: 100 )

  • 主题发起人 huangliang2005
  • 开始时间
H

huangliang2005

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么将一个treeview中满足条件的结点的字体变成另外的颜色
 
怎么将一个treeview中满足条件的结点的字体变成另外的颜色
 
使用标准的treeview恐怕无法达到你的要求。
可以考虑满足条件的结节换成其它图标,或文字用括号括起来。
不行的话只能换控件了。Virtual TreeView肯定可以实现
 
一个系统已经成形,根本不能换控件
 
可以写TreeView的OnCustomDrawItem事件
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if 条件满足 then
TreeView1.Canvas.Font.Color := clRed;
end;
 
这样会把所有的字都改变颜色
 
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Node.Index mod 2 = 0 then begin
//DefaultDraw := False;
TreeView1.Canvas.Font.Color := clRed;
end
else
DefaultDraw := True;
end;
可以看到效果,只有奇数行的是变色的
 
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if node.Selected then
treeview1.Canvas.Font.Color :=clblue;
end;
 
uses
CommCtrl;

procedure SetNodeBoldState(Node: TTreeNode; Value: Boolean);
var
TVItem: TTVItem;
begin
if not Assigned(Node) then Exit;
with TVItem do
begin
mask := TVIF_STATE or TVIF_HANDLE;
hItem := Node.ItemId;
stateMask := TVIS_BOLD;
if Value then state := TVIS_BOLD
else
state := 0;
TreeView_SetItem(Node.Handle, TVItem);
end;
end;

// Example: Make the first node bold.
// Beispiel: Erster Eintrag fett machen.

procedure TForm1.Button1Click(Sender: TObject);
begin
SetNodeBoldState(TreeView1.Items[0], True);
end;
 
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if 满足条件 then
TreeView1.Canvas.Font.Color := clRed
else TreeView1.Canvas.Font.Color := clWindowText;
end;
这样应该可以,给分吧
 
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if 条件满足 then
TreeView1.Canvas.Font.Color := clRed;
end;
 
接受答案了.
 

Similar threads

回复
0
查看
683
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部