!!求助! 用过virtualtree的朋友进来看看! 哪位仁兄能给个 用VirtualTree 的代码:左边是树型显示,右边是相应节点的信息。另外,VirtualTree能对数据库进行操作吗?相应的节点名称合信息都是从库中读取的。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我没有用过VirtualTree,但是下面是TreeView的相关用法,你可以参考一下,呵呵 p_Entry_Code = ^TEntrycode; TEntrycode = record Entry_code : integer; division_code : integer; parent_division_code : integer; name_e : string; name_c : string; end;procedure TJBJG.Initial_TreeNode(Tree_Node: TTreeNode; Division_Code,entry_code: integer );var s_ADOQuery :TADOQuery; s_TreeNode: TTreeNode; s_Record: p_Entry_code; // s_pub9001_Record ->指向记录类型Tpub9001的指针 s_SQL_String: string;begin s_ADOQuery :=TADOQuery.Create(self); s_ADOQuery.Connection:= Frmunit.ADOConnectionHYPNL; with s_ADOQuery do try // 下属公司 s_SQL_String :='select Mis1000.* from Mis1000, Mis0001 ' +' where Mis1000.entry_source = Mis0001.entry_source ' +' and Mis0001.parent_source ='+intToStr(entry_code) +' Order by Mis1000.entry_source '; Close; SQL.Clear; SQL.Add(s_SQL_String); Open; While not Eof do begin New(s_Record); s_Record^.Entry_code:= FindField('Entry_source').AsInteger ; s_Record^.division_code := 0 ; s_Record^.parent_division_code := 0 ; s_Record^.name_e:=FindField('name_e').AsString; s_Record^.name_c:=FindField('name_c').AsString; s_TreeNode := TreeView1.Items.AddChildObject(Tree_Node,FindField('name_c').AsString,s_Record); s_TreeNode.ImageIndex := 4; //node 的显示图标 s_TreeNode.SelectedIndex := 5; //node 被选中时的图标 Initial_TreeNode(s_TreeNode,0,FindField('Entry_source').AsInteger ); Next; end; finally s_ADOQuery.Free; end;end;procedure TJBJG.show_TreeNode;var e_TreeNode : TTreeNode; e_Record : p_Entry_Code; // s_pub9001_Record ->指向记录类型Tpub9001的指针begin with ADOTemp do begin close; sql.Clear; sql.Text:='select name_c from mis1000 where entry_source = 0 '; open; Treeview1.Items[0].Text := Trim(Fields[0].AsString); close; sql.Clear; sql.Text:='select Mis1000.* from Mis1000, Mis0001 ' +' where Mis1000.entry_source = Mis0001.entry_source ' +' and Mis0001.source_level = 1 '; open; first; while not Eof do begin //员工选择目录 Treeview1.Items[0].Selected:=true; New(e_Record); e_Record^.Entry_code:= FindField('Entry_source').AsInteger ; e_Record^.division_code :=0; e_Record^.parent_division_code :=0; e_Record^.name_e:=FindField('name_e').AsString; e_Record^.name_c:=FindField('name_c').AsString; e_TreeNode := TreeView1.Items.AddChildObject(TreeView1.Selected,FindField('name_c').AsString, e_Record); e_TreeNode.ImageIndex := 4; //node 的显示图标 e_TreeNode.SelectedIndex :=5 ; //node 被选中时的图标 Initial_TreeNode(e_TreeNode, 0,FindField('Entry_source').AsInteger ); next; end; end; Treeview1.FullExpand; if TreeView1.Items.Count > 1 then begin Treeview1.Items[1].Selected:=true; Treeview1.Items[0].Selected:=true; end;end; treeview 和listview 我会用的, 可这个三方控件VirtualTree不同啊 DELPHI2007 IDE最大化时不能覆盖整个屏幕 谁有用NMUDP传送文件如何实现?最好有源代码/ edit中如何控制只能输入货币数字,如'123.00' 关于convert函数的问题? div 是什么意思? 隐藏进程后URLDownloadToFile下载不了为什么?单独可以下载,在线给分 如何播放VCD光盘上的视频? 请问哪里有Email检测器的源代码 MTS的客户端为什么连不上服务器! Excel中,有没有简便方法获取某行在页面中的位置? 求救:DBedit的文字对齐问题 cardinal函数有什么作用??
你可以参考一下,呵呵
TEntrycode = record
Entry_code : integer;
division_code : integer;
parent_division_code : integer;
name_e : string;
name_c : string;
end;procedure TJBJG.Initial_TreeNode(Tree_Node: TTreeNode; Division_Code,entry_code: integer );
var
s_ADOQuery :TADOQuery;
s_TreeNode: TTreeNode;
s_Record: p_Entry_code; // s_pub9001_Record ->指向记录类型Tpub9001的指针
s_SQL_String: string;
begin
s_ADOQuery :=TADOQuery.Create(self);
s_ADOQuery.Connection:= Frmunit.ADOConnectionHYPNL;
with s_ADOQuery do
try
// 下属公司
s_SQL_String :='select Mis1000.* from Mis1000, Mis0001 '
+' where Mis1000.entry_source = Mis0001.entry_source '
+' and Mis0001.parent_source ='+intToStr(entry_code)
+' Order by Mis1000.entry_source ';
Close;
SQL.Clear;
SQL.Add(s_SQL_String);
Open; While not Eof do
begin
New(s_Record);
s_Record^.Entry_code:= FindField('Entry_source').AsInteger ;
s_Record^.division_code := 0 ;
s_Record^.parent_division_code := 0 ;
s_Record^.name_e:=FindField('name_e').AsString;
s_Record^.name_c:=FindField('name_c').AsString; s_TreeNode := TreeView1.Items.AddChildObject(Tree_Node,FindField('name_c').AsString,s_Record);
s_TreeNode.ImageIndex := 4; //node 的显示图标
s_TreeNode.SelectedIndex := 5; //node 被选中时的图标 Initial_TreeNode(s_TreeNode,0,FindField('Entry_source').AsInteger ); Next;
end;
finally
s_ADOQuery.Free;
end;
end;procedure TJBJG.show_TreeNode;
var
e_TreeNode : TTreeNode;
e_Record : p_Entry_Code; // s_pub9001_Record ->指向记录类型Tpub9001的指针
begin
with ADOTemp do
begin
close;
sql.Clear;
sql.Text:='select name_c from mis1000 where entry_source = 0 ';
open;
Treeview1.Items[0].Text := Trim(Fields[0].AsString); close;
sql.Clear;
sql.Text:='select Mis1000.* from Mis1000, Mis0001 '
+' where Mis1000.entry_source = Mis0001.entry_source '
+' and Mis0001.source_level = 1 ';
open;
first; while not Eof do
begin
//员工选择目录
Treeview1.Items[0].Selected:=true; New(e_Record);
e_Record^.Entry_code:= FindField('Entry_source').AsInteger ;
e_Record^.division_code :=0;
e_Record^.parent_division_code :=0;
e_Record^.name_e:=FindField('name_e').AsString;
e_Record^.name_c:=FindField('name_c').AsString; e_TreeNode := TreeView1.Items.AddChildObject(TreeView1.Selected,FindField('name_c').AsString, e_Record);
e_TreeNode.ImageIndex := 4; //node 的显示图标
e_TreeNode.SelectedIndex :=5 ; //node 被选中时的图标 Initial_TreeNode(e_TreeNode, 0,FindField('Entry_source').AsInteger );
next;
end; end; Treeview1.FullExpand; if TreeView1.Items.Count > 1 then
begin
Treeview1.Items[1].Selected:=true;
Treeview1.Items[0].Selected:=true;
end;
end;