treeview的所有相关问题!!!!用过的高手请给点指导

alonesnake 2004-04-29 03:17:22
本人想在一个仓库管理系统里用到treeview
在一个窗体里左边放置一个treeview显示物品类别,右边放一个dbgrid显示类别里具体数据.

有2个按钮对treeview操作:添加类别,删除类别
5个按钮对dbgrid操作:添加,编辑,保存,取消删除.

现在有几个问题

1.删除节点:删除时候判断此节点下是否还有节点,有就不能删除
删除节点时,如果此节点内的数据不为空(在grid内有数据),不能删除

2,查询节点数据:鼠标点父节点,grid里显示父节点里多有节点的数据,点子节点就
显示子节点里的数据
...全文
49 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jinjazz 2004-04-29
查询--->
procedure TForm1.TreeView1Click(Sender: TObject);
var i:integer;
begin
query1.SQL.Clear;
for i:=0 to treeview1.Selected.Count do
begin
query1.SQL.Add('select * from xxx where ..='''+treeview1.Items.Item[i].Text+'''');
if i<treeview1.Selected.Count then
query1.SQL.Add('union');
end;
query1.Close;
query1.Open;
end;
  • 打赏
  • 举报
回复
jinjazz 2004-04-29
删除按钮--先判断子节点在判断数据集
if treeview1.Selected.HasChildren then
showmessage('子类不为空!')
else begin
query1.sql.Clear;
query1.SQL.Add('select count(*) as cc from xxx where ...='''+treeview1.Selected.Text+'''');
query1.Close;
query1.Open;
if query1.FieldByName('cc').AsInteger>0 then begin
showmessage('纪录不为空!');
exit;
end;
treeview1.Selected.Delete ;
end;
  • 打赏
  • 举报
回复
jinjazz 2004-04-29
删除类别按钮
if treeview1.Selected.HasChildren then
showmessage('子类不为空!')
else
treeview1.Selected.Delete;
  • 打赏
  • 举报
回复
alonesnake 2004-04-29
谢谢楼上各位的大大

能给个例子不

本人学delphi没多久,实在是菜的很
  • 打赏
  • 举报
回复
jinjazz 2004-04-29
第二个问题你可以用模糊查询来实现,或者用一个循环
select * from ....
where ....= ...treeview1.Selected.Item[0].Text
union
select * from ....
where ....= ...treeview1.Selected.Item[1].Text
union
....
select * from ....
where ....= ...treeview1.Selected.Item[n].Text
  • 打赏
  • 举报
回复
jinjazz 2004-04-29
查询treeview1.Selected.Text 对应的数据 query1.recordcount>0 就不能删
  • 打赏
  • 举报
回复
jinjazz 2004-04-29
treeview1.Selected.HasChildren 判断
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi

5124

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2004-04-29 03:17
社区公告
暂无公告