怎样设置treeview的图标?怎样让光标移到节点的时候变成手指的样子?(就像浏览器里一样)(50分)

  • 主题发起人 主题发起人 Serena
  • 开始时间 开始时间
S

Serena

Unregistered / Unconfirmed
GUEST, unregistred user!
1。我的treeview只有一层节点,即所有的节点都没有parent,和child;我想在
点到这个节点的时候图标变成打开图标,没点到的变成关闭图标。
procedure TForm3.GCTreeGetImageIndex(Sender: TObject; Node: TTreeNode);
begin
if Node.expanded then
Node.ImageIndex := 1
else
Node.ImageIndex := 0
end;
可是没有反应,怎么回事?以前我做的是几层的treeview,用上面的程序,还可以的,
现在呢?
2.怎样让光标移到节点的时候变成手指的样子?(就像浏览器里一样)。
 
procedure TForm3.GCTreeGetImageIndex(Sender: TObject; Node: TTreeNode);
begin
if Node.expanded then
// Node.ImageIndex := 1
node.selectedindex:=1;
else
node.selectedindex:=0;
// Node.ImageIndex := 0
end;
应该是上面
//2:
 
2:
set the
tree cursor 为指定的icon
 
to cnaoszh:
1)还是不行,没反应,是不是treeview还有什么其他的设置?
2)这样设置的光标,一进入treeview还没有指到node就已经变成手指头光标了。
 
看华眼了
用treeview的onchange 事件
images为你的 images
再在生成treeview节点时设置treeview的
Node.ImageIndex := 0
Node.SelectedIndex := 1
其他的代码不用写

 
2)
你可以这样:
procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var
HT:THitTests;

begin
HT := TreeView1.GetHitTestInfoAt(X, Y);
if (htOnItem in HT) or (htOnIcon in HT) then
TreeView1.Cursor:=crHandPoint
else
TreeView1.Cursor:=crdefault;
end;
 
我就在onchange里写了
Node.ImageIndex := 0
Node.SelectedIndex := 1
期它的没写,好像也对了。你说的

再在生成treeview节点时设置treeview的
Node.ImageIndex := 0
Node.SelectedIndex := 1
我没有写,这样对吗?

第二个问题?
 
Treeview.images:=youimages;
你社了吗?
给我你的mail
send source code to you?
ok?
 
我这样做但效果并不是很好:
procedure Tsearch_F.TreeView1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
N:TTreeNode;
i:integer;
begin
inherited;
for i:=0 to (Sender as TTreeview).Items.Count-1 do
begin
N:=(Sender as TTreeview).GetNodeAt(X,Y);
if N<>nil then
(Sender as TTreeview).Cursor:=crHandPoint
else (Sender as TTreeview).Cursor:=crDefault;
end;
end;
 
to cnaoszh:邮件收到。明白了。不过那个手指头光标没有浏览器里的好看,有什么办法吗?
另外我的tree是动态从数据库里取数据生成的,所以好像只能在onchange里设置
Node.ImageIndex := 0
Node.SelectedIndex := 1
反正效果好象是一样的。
 
在增加node的时候设置好,
node.imageindex和node.selectedindx不更好吗?
 
我是这么加的
GCTree.Items.Add(nil,Query1.FieldByName('名称').asstring);
下面怎么写?
 
多人接受答案了。
 
后退
顶部