表:FLBM FLMC BZ ID PARENT
01 日常用品 无 0 -1
0101 生活用 无 2 0
0101 学习用 无 3 0
02 工业用品 无 1 -1
0201 轻工业 无 4 1
在窗体上放一个TreeView控件, 四个Edit 有三个按钮
要求实现这样的功能:添加同级,就能添加根级,和各个同级;
添加下级就能添加下级,同时表中数据也更新了,还有一个修改的
01 日常用品 无 0 -1
0101 生活用 无 2 0
0101 学习用 无 3 0
02 工业用品 无 1 -1
0201 轻工业 无 4 1
在窗体上放一个TreeView控件, 四个Edit 有三个按钮
要求实现这样的功能:添加同级,就能添加根级,和各个同级;
添加下级就能添加下级,同时表中数据也更新了,还有一个修改的
解决方案 »
- 注册表启动项的问题
- 判断listbox为空后怎么终止下面程序语句运行
- 判断数据类型
- dll使用问题~~~
- 请教一个BatchMove速度问题,其慢!----2
- 怎么查看Windows API函数的delphi定义!
- 如何用SQL语句创建一个有小数字段的表,小数格式为两位小数,默认值为零(ACCESS数据库)?谢谢各位!
- 我用PageControl新建了三个页标签,怎样锁定一个页标签始终是PageControl的ActivePage,直到解除锁定为止?
- 图象的动态调入
- 运行程序连接sql server时,有输入用户名和密码的对话框,在程序中如何写代码包含用户名和密码,以方便登陆?
- 群发邮件
- delphi2009支持png格式的图标吗?
procedure TFTestFrm1.AddParentNode(TVNode: TTreeNode; PField: string);
begin
TitleNode := tv.Items.Add(nil, '全部');
TitleNode.ImageIndex := 0;
qry1.Close;
qry1.SQL.Text := 'select * from dl where lb=:lb';
qry1.Parameters.ParamByName('lb').Value := string(PField);
qry1.Open;
if qry1.RecordCount > 0 then
begin
qry1.First;
while not qry1.Eof do
begin
TVNode := tv.Items.Add(nil, IntToStr(qry1.FieldValues['ptid']) + '-' + qry1.FieldValues['ptname']);
TVNode.ImageIndex := 0;
TVNode.SelectedIndex := 1;
AddParentChildNode(TVNode, IntToStr(qry1.FieldValues['ptid']));
qry1.Next;
end;
end;
end;
procedure TFTestFrm1.AddParentChildNode(TVPNode: TTreeNode; PField: string);
begin
qry2.Close;
qry2.SQL.Text := 'select xlid,xlname from xl where parent=:parent';
qry2.Parameters.ParamByName('parent').Value := PField;
qry2.Open;
if qry2.RecordCount > 0 then
begin
qry2.First;
while not qry2.Eof do
begin
PChildNode := tv.Items.AddChild(TVPNode, IntToStr(qry2.FieldValues['xlid']) + '-' + qry2.FieldValues['xlname']);
PChildNode.ImageIndex := 0;
PChildNode.SelectedIndex := 1;
qry2.Next;
end;
end;
end;建议楼主选择cxDbTreeview,里面可以设置根节点和节点,添加数据也很方便!
http://www.52delphi.com/list.asp?ID=6
以前写的一个函数
从菜单生成树:
procedure MenuToTreeView(MainMenu: TMainMenu; Tree: TTreeView; RootCaption: string='菜单功能组');
var
i: integer;
Root: TTreeNode;
procedure CreateTreeByMenuItem(Item: TMenuItem; ParentNode: TTreeNode);
var
i: integer;
Node,tempNode: TTreeNode;
begin
tempNode := TTreeView(ParentNode.TreeView).Items.AddChild(ParentNode,item.Caption);
for i := 0 to Item.Count - 1 do
begin
Node := tempNode;
if item.Items[i].Count > 0 then
CreateTreeByMenuItem(item.Items[i],Node)
else TTreeView(ParentNode.TreeView).Items.AddChild(tempNode,item.Items[i].Caption);
end;
end;
begin
Tree.Items.Clear;
Root := Tree.Items.AddChild(nil,RootCaption);
for i := 0 to MainMenu.Items.Count - 1 do
CreateTreeByMenuItem(MainMenu.Items[i],Root);
end;