急! 如何让TREEVIEW控件即使没有子级,也要在旁边显示一个+号?(50分)

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间

吴剑明

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一个数据库的树型显示,就象WINDOWS的资源管理器那样,能让数据库用户
直接在上面改东东。现在要求单击节点旁的+号,判断如果有下级内容的话,
就能显示出相关的数据内容。
但是生成父节点时,不做子节点的生成,+号就显示不出来。无法被用户点击,也就无法
做判断了。
请问如何解决?
 
自己画呀

Defaultdraw:=false;
treeview1.canvas.Rectangle(1,1,10,10);
treeview1.Canvas.TextOut(12,1, node.Text);
 
设置节点的HasChildren为true就行了。
 
另外漏了一个,点击+号,如何获得+号旁边的节点名?
对不起,以前干过,现在又忘了!:(
 
treeview1.Items[n].HasChildren:=true;
然后它就有+号了。不管实际上有没有孩子。
 
啊呀晚了一点点。
第二问大致如下:
var
AnItem: TTreeNode;
AttachMode: TNodeAttachMode;
HT: THitTests;
begin
AttachMode := naAdd;
HT := tv1.GetHitTestInfoAt(X, Y);
AnItem := tv1.GetNodeAt(X, Y);

OK?
 
谢谢,能不能再回答我第二个问题?

2) 点击+号,如何获得+号旁边的节点名?

分可再加的。
 
wint:手真快呀

按照wint的方法,根据HitTestInfo得到结点从而
获取结点名
 
在每个父节点下插入一空的子孩子。便可实现。
程序如下:
procedure TForm1.FormShow(Sender: TObject);
var
list:Tstringlist;
node:Ttreenode;
i:integer;
begin
list:=Tstringlist.create();
session.GetAliasNames(list);
for i:=0 to list.Count-1 do
begin
node:=treeview1.Items.AddChild(nil,list);
treeview1.Items.AddChild(node,'');
end;

list.Destroy;
end;
 
多人接受答案了。
 
后退
顶部