一个很多人问过的问题,如何使treeview和数据库相关联 网上有很多dbtreeview的控件,不知道大家是怎么实现treeview和数据库相关联的,这个在数据库的应用程序中间应该是比较经常用到的一个技术.做数据库经常用得上. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以看看《delphi6企业级应用解决方案》的例子 谢谢,这本书确实不错,下载了5的电子版看,有时间去买个纸版的,请问rouqing还有其他好书推荐吗? 首先,数据表中要有3个字段、id、parentid、name然后设置DBTreeView的3个属性parentfield、listfield、keyfield就可以了! DBTreeView就搞定啦,呵呵http://lysoft.7u7.net 首先,数据表中要有3个字段、id、parentid、name贴一小段我的代码:(简单用法,用 TTreeNode 的 Data ,常用的方法是让 data指向一个对象,或结构体)procedure TfrmDepartEmp.BuildTree;var tNode :TTreeNode;begin if dsDept.Active then dsDept.Close; dsDept.CommandText := 'select * from Departments'; dsDept.Open; tNode := treeDept.Items.AddChild(nil,'你的公司'); tNode.Data := Pointer(0); tNode.ImageIndex := 0; tNode.SelectedIndex := 1; TreeMe(tNode);end;procedure TfrmDepartEmp.TreeMe(tNode: TTreeNode);var ParentID : Longint; childNode : TTreeNode;begin ParentID := Integer(tNode.Data ); dsDept.First; while not dsDept.Eof do begin if dsDept.FieldByName('ParentID').AsInteger = ParentID then begin childNode := TreeDept.Items.AddChild(tNode, dsDept.FieldByName('DeptName').AsString); childNode.Data := Pointer(dsDept.FieldByName('DeptID').AsInteger); childNode.ImageIndex := 0; childNode.SelectedIndex := 1; //TreeMe(childNode); end; dsDept.Next; end; childNode := tNode.getFirstChild; while childNode <> nil do begin TreeMe(childNode); childNode := childNode.getNextSibling; end;end; 请问各位高手有什么办法可以锁定dxdbgrid的行 GMail信箱大赠送 关于ocx控件的安装 dll 声明问题..... 请问如何改变MainMenu菜单的大小、如何设置菜单项Caption的属性、如何改变状态栏中显示的文字的颜色中?谢谢! 动态创建button,创建后如何捕获button的事件。 明天放假了,放到17号 服务器两个网卡,工作站通过socket登陆,速度很慢,有什么解决办法??? 我想在文本框中能够加一个网格底图,应怎做? 如何锁定DBGrid的某列不移动? Delphi中如何连接Sybase socket发送包的问题 急急急急急急急急急急急急
然后设置DBTreeView的3个属性parentfield、listfield、keyfield就可以了!
var
tNode :TTreeNode;
begin
if dsDept.Active then dsDept.Close; dsDept.CommandText := 'select * from Departments';
dsDept.Open;
tNode := treeDept.Items.AddChild(nil,'你的公司');
tNode.Data := Pointer(0);
tNode.ImageIndex := 0;
tNode.SelectedIndex := 1;
TreeMe(tNode);
end;
procedure TfrmDepartEmp.TreeMe(tNode: TTreeNode);
var
ParentID : Longint;
childNode : TTreeNode;
begin
ParentID := Integer(tNode.Data );
dsDept.First;
while not dsDept.Eof do
begin
if dsDept.FieldByName('ParentID').AsInteger = ParentID then
begin
childNode := TreeDept.Items.AddChild(tNode,
dsDept.FieldByName('DeptName').AsString);
childNode.Data := Pointer(dsDept.FieldByName('DeptID').AsInteger);
childNode.ImageIndex := 0;
childNode.SelectedIndex := 1;
//TreeMe(childNode);
end;
dsDept.Next;
end; childNode := tNode.getFirstChild;
while childNode <> nil do
begin
TreeMe(childNode);
childNode := childNode.getNextSibling;
end;end;