如何改变TreeView某一个结点的字体和图标?(50分)

  • 主题发起人 主题发起人 oldnew
  • 开始时间 开始时间
O

oldnew

Unregistered / Unconfirmed
GUEST, unregistred user!
CustomDrawItem事件 怎么只能改变当前结点的字体和图标啊???

怎么实现如下的需求:
TreeView中有2个结点:Node1和Node2,图标都是Icon1,当前选中Node1
当我点击窗体中的一个Button时,Node2结点的字体颜色变为红色,图标变为Icon2

如何实现??? 谢谢各位

(我想可能主要原因是Node2没有刷新,如果用什么方法刷新一下Node2,可能就可以了)
 
简单的方法:
procedure TForm1.Button1Click(Sender: TObject);
var
Node: TTreeNode;
begin
if node.Text='123 then
Node.ImageIndex:=0;
if node.Text='123'then
Node.SelectedIndex:=0;
end;
 
刷新可用TreeView1.Invalidate;
改变字体颜色应该在OnCustomDrawItem事件里实现(D7下测试通过):
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
const
NodeFontColors: array[Boolean] of TColor = (clWindowText, clRed);
begin
Sender.Canvas.Font.Color := NodeFontColors[Node = Node2];
end;
改变图标可以通过改变Node.ImageIndex来实现。
 
关键在TreeView1.Invalidate啊,厚厚! 谢谢各位
 
后退
顶部