点击左面的节点时,更改DbGrid连接的Dateset对应的ADOQuery中的sql语句为有关这个节点的数据,再刷新一下DbGrid就可以了

解决方案 »

  1.   

    你在装载树时先定义一个类节点数组,节点数组存放节点信息
    节点数组的结构就是你想显示数据的内容结构,然后把数据的内容都放到这个数组里.
    你点击节点时,相应节点数组的内容就放到DbGrid即可
      

  2.   

    建立一个TStringList数组 如
     SQLList array[0..n] of TStringList;
    可以将节点的AbosultIndex属性 与 相关的这个数组的索引联系起来
    例:
    procedure Treeview1.NodeChange(,,,,,,,)
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add(SQLList[Node.AbsoluteIndex]);
      Query.Open;
    end;
      

  3.   

    能再说清除点吗?
    呵呵
    刀客的方法我听懂了可用ado Table 应怎么做?
      

  4.   

    to:hqycxy(仇笑雨) 
    大概的代码:你看一下
    类节点
    type TClassNODE = record//节点的结构
       MeaningA : string;//你需要的数据1
       MeaningB : string;//你需要的数据2
       end;
     ClassNodeInfo : array of TClassNode;//节点数组
     p : ^TClassNode;//TClassNode指针
    CurrentNode : TTreeNode;//树节点
    CurrentNode := treeview1.items.AddChild(tnNODE,'名称1');//加节点
      ClassNodeInfo[1].MeaningA=1节点.数据1
      ClassNodeInfo[1].Meaningb=1节点.数据2
     p := @ClassNodeInfo[1];
     CurrentNode.Data := p ;//这样节点数组1存放节点1信息
    2.点击节点时,相应节点数组的内容就放到DbGrid
     p : ^TClassNode;
     p:=TreeView1.Selected.Data;
     p^.MeaningA,p^.MeaningB// 就是你想要的数据
    这是原理
    可用ado Table 应怎么做?
    用ado连数据库,把上面的代码做成个递归函数,数据1,数据2从数据库中得到
    在装载树时每加一个节点,就把相应的信息节点加一次!
      

  5.   

    我们的想法不谋而合,我现在正在以treeview为基础做一个新控件,使它具有数据操作属性方法,现在已小有进展,多多交流呀!
      

  6.   

    用Query 控件,在SQL语句里加一句
    var
     TreeItem:String;
     TreeItem:=TreeView.TreeNode.Items[ YourClicked].text;
    记不清了,你自己来吧
     Where FieldName=TreeItem;