如何设置根据节点的level来设置该层的颜色,我是这样做的:
case Node.Level of
0:TTreeView(sender).Canvas.Font.Color:=clWindowText;
1:TTreeView(sender).Canvas.Font.Color:=clBackground;
2:TTreeView(sender).Canvas.Font.Color:=clFuchsia;
3:TTreeView(sender).Canvas.Font.Color:=clPurple;
4:TTreeView(sender).Canvas.Font.Color:=clRed;
5:TTreeView(sender).Canvas.Font.Color:=clBlue;
end;
with TTreeView(sender).Canvas do
begin
NodeRect:=TTreeView(sender).Selected.DisplayRect(true);
FillRect(NodeRect);
TextOut(NodeRect.Left, NodeRect.Top,TTreeView(sender).Selected.Text);
NodeRect := Node.DisplayRect(False);
end;
但是有问题。
case Node.Level of
0:TTreeView(sender).Canvas.Font.Color:=clWindowText;
1:TTreeView(sender).Canvas.Font.Color:=clBackground;
2:TTreeView(sender).Canvas.Font.Color:=clFuchsia;
3:TTreeView(sender).Canvas.Font.Color:=clPurple;
4:TTreeView(sender).Canvas.Font.Color:=clRed;
5:TTreeView(sender).Canvas.Font.Color:=clBlue;
end;
with TTreeView(sender).Canvas do
begin
NodeRect:=TTreeView(sender).Selected.DisplayRect(true);
FillRect(NodeRect);
TextOut(NodeRect.Left, NodeRect.Top,TTreeView(sender).Selected.Text);
NodeRect := Node.DisplayRect(False);
end;
但是有问题。
0:TTreeView(sender).Canvas.Font.Color:=clWindowText;
1:TTreeView(sender).Canvas.Font.Color:=clBackground;
2:TTreeView(sender).Canvas.Font.Color:=clFuchsia;
3:TTreeView(sender).Canvas.Font.Color:=clPurple;
4:TTreeView(sender).Canvas.Font.Color:=clRed;
5:TTreeView(sender).Canvas.Font.Color:=clBlue;
end;只需要上面这部份的代码就可以了,后面的重画代码不要,交给TreeView去处理。
再帮我解决两个问题吧,你已经帮了我这个大菜鸟很多次了,谢谢!
1,怎样可以改变被选中的节点的选折区域的颜色,默认是深蓝色;
2,被选中的节点的选折区域的宽度如何确定? 节点
----------------------------------------
|asdfsdfsdf <--|---选折区域的颜色
| ______________________________________|
|<---------选折区域的宽度--------------->|
NodeRect: TRect;
backRect: TRect;
begin
case Node.Level of
0:TTreeView(sender).Canvas.Font.Color:=clWindowText;
1:TTreeView(sender).Canvas.Font.Color:=clBackground;
2:TTreeView(sender).Canvas.Font.Color:=clFuchsia;
3:TTreeView(sender).Canvas.Font.Color:=clPurple;
4:TTreeView(sender).Canvas.Font.Color:=clRed;
5:TTreeView(sender).Canvas.Font.Color:=clBlue;
end;
with TTreeView(sender).Canvas do
begin
if cdsSelected in State then
Brush.Color := clYellow; // 设置所选行背景色
NodeRect:=Node.DisplayRect(True);
// backRect即为所选区域
backRect := Rect(NodeRect.Left, NodeRect.Top, TreeView1.Width, NodeRect.Bottom);
FillRect(backRect);
end;
end;
--------------------------------------------------------------------------
|asdfsdfsdf | 黄色 |
|__________________________________|______________________________________|
/\
| |_____虚线框 |希望变成这样子节点
------------------------------------------------------------------------
|asdfsdfsdf 黄色 |
|________________________________________________________________________|
/\
| |_____虚线框 |
是我搞错了。
焦点不落在treeview上那个虚线框就不见了。
但这种效果我在dxDBTreeList控件上看见过。
或者到www.playicq.com查找devexpress