我是delphi初学者,谁能告诉我一些treeview与数据库链接的知识吗?谢谢.30分

解决方案 »

  1.   

    给你一个我调试用的例子
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, DB, ADODB, Menus, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        ADOConnection1: TADOConnection;
        ADOTable1: TADOTable;
        ADOConnection2: TADOConnection;
        ADOTable2: TADOTable;
        PopupMenu1: TPopupMenu;
        N1: TMenuItem;
        N2: TMenuItem;
        ADOConnection3: TADOConnection;
        ADOTable3: TADOTable;
        ADOConnection4: TADOConnection;
        ADOQuery1: TADOQuery;
        Splitter1: TSplitter;
        Memo1: TMemo;
        N3: TMenuItem;
        N4: TMenuItem;
        N5: TMenuItem;
        N6: TMenuItem;
        procedure FormCreate(Sender: TObject);
        procedure TreeView1Click(Sender: TObject);
        procedure N1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
    ClassTreeNode: TTreeNode;
      TypeTreeNode: TTreeNode;
      CommodityTreeNode: TTreeNode;
    begin
        TreeView1.Items.Clear;
        adotable1.First;
        adotable2.First;
        adotable3.First;
        while not adotable1.Eof do
        begin
            ClassTreeNode:= TreeView1.Items.Add(nil,adotable1.fieldbyname('省份').AsString);
            while not adotable2.Eof do
        begin
        if adotable1.FieldByName('省份').AsString=adotable2.FieldByName('省份').AsString then
        begin
            TypeTreeNode:= TreeView1.Items.AddChild(ClassTreeNode,adotable2.fieldbyname('城市').AsString);
            while not adotable3.Eof do
        begin
        if adotable2.FieldByName('城市').AsString=adotable3.FieldByName('城市').AsString then
        begin
            CommodityTreeNode:= TreeView1.Items.AddChild(TypeTreeNode,adotable3.fieldbyname('酒店名称').AsString);
        end;
            adotable3.Next;
        end;
        end;
            adotable2.Next;
            adotable3.First;
        end;        adotable1.Next;
            adotable2.First;
        end;end;procedure TForm1.TreeView1Click(Sender: TObject);
    begin
    if treeview1.Selected.HasChildren=false then
    begin
    with adoquery1 do
    begin
    active:=false;
    SQL.Clear;
    SQL.Add('select 字段4 from qrhotel where 酒店名称='''+treeview1.Selected.Text+'''');
    active:=true;
    memo1.Text:=adoquery1.fieldbyname('字段4').AsString;
    end;
    end;
    end;procedure TForm1.N1Click(Sender: TObject);
    var
    emptynode: TTreeNode;
    begin
      if treeview1.Selected.Parent=nil then
      begin
      emptynode:=treeview1.Items.Add(nil,'省分');
      emptynode:=treeview1.Items.AddChild(emptynode,'城市');
      treeview1.Items.AddChild(emptynode,'新酒店名称')
      end
      else if treeview1.Selected.HasChildren=false then
      begin
      treeview1.Items.AddChild(treeview1.Selected.Parent,'新酒店名称');
      end
      else
      begin
      emptynode:=treeview1.Items.AddChild(treeview1.Selected.Parent,'城市');
      treeview1.Items.AddChild(emptynode,'新酒店名称')
      end;
    end;end.
      

  2.   

    用dxdbtreeview + Sqlserver2k的话,设置好Dataset,DataSource,DataConnection之后只要设置KeyField,ListField,ParentField三个属性就可以了。