有关TREEVIEW的高难度问题了大家过来看看了可能不是高难度总之我不会做了(100分)

  • 主题发起人 主题发起人 dqcwb
  • 开始时间 开始时间
D

dqcwb

Unregistered / Unconfirmed
GUEST, unregistred user!
让不同的节点有不同的color,怎样来做呢

color指的是字体的color了
 
自己画NODE的字体,就可以设置颜色了,我没有试过,
DELPHI的DEMO里有一个专门的例子,可以找来看看
 
添加一些节点:
procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.LoadFromFile('D:/temp/delphi/cc.txt')
end;
/////////// 设置 TreeView1 的 OnCustomDrawItem如下:
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
NodeRect: TRect;
begin
with TreeView1.Canvas do
begin
NodeRect := Node.DisplayRect(True);
if cdsSelected in State then
begin
Font.color:=clYellow;
Brush.Color := clRed;
FillRect(NodeRect);
end
else
begin
Brush.Color := clYellow;
end;
FillRect(NodeRect);
TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
end;
end;
 
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
NodeRect:TRect;
begin
with TreeView1.Canvas do
begin
NodeRect:=Node.DisplayRect(True);
if cdsSelected in state then
begin
Brush.Color :=clSilver;
end;
if Node.Parent <>nil then//子节点为红色,父节点为兰色
begin
Font.Color :=clRed;
FillRect(NodeRect);
end
else
Font.Color :=clBlue;
if Node.Text ='eee' then//硬性编码某个节点颜色 , Node=TreeView1.Items[3]
Font.Color :=clGreen;
FillRect(NodeRect);
TextOut(NodeRect.Left,NodeRect.Top,Node.Text);
end;
end;
 
后退
顶部