关于treeview的用法(50分)

  • 主题发起人 主题发起人 lhq_007
  • 开始时间 开始时间
L

lhq_007

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟是个新手,有一个关于TreeView的问题要请教各位大哥:
我想在Treeview里实现这种效果,当鼠标移到某个节点上时,那个节点的标题就可以
改变颜色,我现在只能是不论移到哪个节点上所有的节点都会变,现在主要是找不到该怎么去
控制一个节点。如下面代码:
procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
MyHitTest : THitTests;
begin
MyHitTest := TreeView1.GetHitTestInfoAt(X,Y);
if htOnItem in MyHitTest then
begin
treeview1.Cursor:=crhandpoint;
treeview1.Font.Color:=clred;
end
else
begin
treeview1.Cursor:=crDefault;
treeview1.font.Color:=clWindowText
end;
end;
end.
这样不能单独对某一节点的标题进行控制,不知如果要对某一节点控制要如何编写。
 
我也碰到这个问题了,可以控制节点的文字,不能控制节点的颜色,盼高手
 
TreeView1.GetNodeAt()
 
看你写的代码,无非想当鼠标移到某个结点上时,该结点的颜色变掉,鼠标形状变成一个手字形,
要实现这一点很简单,把HotTrack设为True即可。
 
楼上的两位已经说得很清楚了
 
HotTrack是最简便的方法
 
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
NodeRect: TRect;
begin
with TreeView1.Canvas do
begin
if cdsSelected in State then
begin
Brush.Color := clred;
NodeRect := Node.DisplayRect(True);
FillRect(NodeRect);
end;
TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
end;
end;
 
多人接受答案了。
 
后退
顶部