数据库结构:
ID PID Caption
1  0   aaa
2  1   abb
3  1   abc
4  2   abbc数据库的表已经建好,但是不会写Delphi部分代码,请高手发布一下代码,最好是完整代码,整个Form全部Copy上,包括结构声明部分,最好是所有功能都写在同一个Form中,稍做修改就能够运行的,急用.谢谢高手

解决方案 »

  1.   

    http://www.websnap123.com/show-TVRBeU1EQXg=.html
    1:是不是要在treenode的结构指里里存放数据库记录的键值
    如果是的话就像下面那样了
    procedure TBqLeaveFrm.InitTV;
    var
    I:Integer;
    begin
    for I:=0 to TV.Items.Count-1 do
    begin
    Dispose(TV.Items[i].Data);
    TV.Items[I].Data:=nil;
    end;
    TV.Items.Clear;
    end;
    procedure TBqLeaveFrm.LoadTV;
    var
    ParentNode,Node : TTreeNode;
    BeInHospital_No:^integer;
    SickName:string;
    begin
    InitTV;
    if FQuery_TV.Active then
    FQuery_TV.Close;
    FQuery_TV.SQL.Clear;
    FQuery_TV.SQL.Add('select beinhospital_no,sick_name,sex,bq_section_id ');
    FQuery_TV.SQL.Add('from bq_sick_basic_mis nolock ');
    FQuery_TV.SQL.Add('where bq_square_indicate=0 and bq_section_id=:Bq_Section_Id');
    FQuery_TV.Parameters.ParamByName('Bq_Section_Id').Value:=HisObj.CurrentSectionNo;
    FQuery_TV.Open;
    FQuery_TV.First;
    TV.Items.BeginUpdate;
    ParentNode:=TV.Items.Add(Nil,HisObj.CurrentSectionName);
    ParentNode.ImageIndex:=2;
    ParentNode.SelectedIndex:=2;
    while not FQuery_TV.Eof do
    begin
    New(BeInHospital_No);
    SickName:=FQuery_TV['sick_name'];
    BeInHospital_No^:=FQuery_TV['beinhospital_no'];
    Node:=TV.Items.AddChildObject(ParentNode,SickName,BeInHospital_No);
    if Trim(FQuery_TV['sex'])='男' then
    begin
    Node.ImageIndex:=1;
    Node.SelectedIndex:=1;
    end
    else
    begin
    Node.ImageIndex:=0;
    Node.SelectedIndex:=0;
    end;
    FQuery_TV.Next;
    end;
    TV.TopItem.Expand(True);
    TV.Items.EndUpdate;
    end;取出来用
    procedure TBqLeaveFrm.TVDblClick(Sender: TObject);
    var
    TN:TTreeNode;
    BeInHospital_No:integer;
    begin
    if TV.Items.Count=0 then
    begin
    Application.MessageBox('此病区未有病人在院!','错误提示',MB_OK);
    Exit;
    end;
    if TV.Selected=Nil then
    begin
    Application.MessageBox('请选择要办理病区出院的病人!','错误提示',MB_OK);
    Exit;
    end;
    if TV.Selected.Parent=Nil then
    Exit;
    TN:=TV.Selected;
    BeInHospital_No:=Integer(TN.Data^);
    Get_MedicineMis(BeInHospital_No);
    Btn_Preview.Enabled:=True;
    Btn_Print.Enabled:=True;
    Btn_ConfirmLeaveBq.Enabled:=True;
    TV.Enabled:=False;
    看看这个吧!
      

  2.   

    你要先明白一点,treeview是不能连接数据库的,也谈不上绑定数据,你只有从数据库中读取数据,然后逐条添加到treeview节点上,如果内容很多,都需要添加的话,就要自己搞一个record,然后用节点的Data属性去保持record的指针
      

  3.   

    treeview不是数据感知控件,不能直接连数据库。
    楼主要自己写sql创建结点.procedure TForm1.FormShow(Sender: TObject);
    var
      q1,q2:tadoquery;
      i,j:integer;
      nodeo,nodep:ttreenode;
      sid:psid;
    begin
      treeview1.Items.Clear;
      q1:=tadoquery.Create(nil);
      q1.Connection :=adoconnection1;
      q1.Close;
      q1.SQL.Add('select dep from dept ');
      q1.Open;
      q2:=tadoquery.Create(nil);
      q2.Connection :=adoconnection1;
      q1.First;
      if not q1.Eof  then
        treeview1.AutoExpand :=true;
        treeview1.ReadOnly :=true;
        nodeo:=treeview1.items.AddFirst(nil,'测试');
        for i := 0 to q1.RecordCount - 1 do
          begin
            nodep:=treeview1.Items.AddChild(nodeo,q1.FieldByName('dep').AsString  );
            q2.Close;
            q2.SQL.Clear;
            q2.SQL.Add('select id,stano,name,ename from t_user where cast(dep as varchar(10))='''+q1.fieldbyname('dep').AsString +''' ' );
            q2.Open;
            q2.First ;
            if not q2.Eof  then
              for j := 0 to q2.RecordCount  - 1 do
                begin
                  treeview1.Items.AddChildObject(nodep,q2.FieldByName('name').AsString,nil);
                  q2.Next;
                end;
            q1.Next ;
          end;
     q1.Free;
     q2.Free;
          
    end;
      

  4.   

    使用一个TreeView,
    数据库结构要增加字段,记录父结点ID: 
    ID PID Caption FatherID
    1  0   aaa       
    2  1   abb     1
    3  1   abc     2
    4  2   abbc    2
    通过编写一个读取数据库文件的方式,即可实现TreeView与数据库的关联。 
      

  5.   

    treeview的节点用指针,每一个节点对应数据库里你想要的数据
    也可以根据节点,查询数据库,显示出来
      

  6.   

    把表内容load出来,放到TList中,再写一个方法递归一下,构造书啦