type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TS_dep: TTabSheet;
    TreeView_dep: TTreeView;
    Query1: TQuery;
    Query2: TQuery;
    Database1: TDatabase;
    Button1: TButton;
    Button2: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure FormCreate(Sender: TObject);
    procedure loadRootNode;
    procedure loadChilds(pID:integer;pNode:TTreeNode);  private
    { Private declarations }
  public
    { Public declarations }
  end;  PNodeRec = record
    drug_int:integer;
    drugcode:string;
    end;      
var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
    loadRootNode;
end;procedure loadRootNode ;
var
    pID:integer;
    aNode: TTreeNode;
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from deptab where depfID=0');
  Query1.Open;  while not Query1.Eof do
  begin
    pID:=Query1.FieldByName('depid').AsInteger;    
    aNode := TreeView_dep.Items.Add(nil, Query1.FieldByName('depname').asstring);
    Query1.Next;
  end;
end;以上是我程序的一部分,我有两个问题:
1、 PNodeRec 作为一种类型,定义的地方和写法是否正确?
2、 在过程loadRootNode 中,编译时报Query1和TreeView_dep没有定义,为什么?

解决方案 »

  1.   

    type
      TForm1 = class(TForm)
        PageControl1: TPageControl;
        TS_dep: TTabSheet;
        TreeView_dep: TTreeView;
        Query1: TQuery;
        Query2: TQuery;
        Database1: TDatabase;
        Button1: TButton;
        Button2: TButton;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        procedure FormCreate(Sender: TObject);
         private
        { Private declarations }
        procedure loadRootNode;
        procedure loadChilds(pID:integer;pNode:TTreeNode);
      public
        { Public declarations }
      end;  PNodeRec = record
        drug_int:integer;
        drugcode:string;
        end;      
    var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
        loadRootNode;
    end;procedure TForm1.loadRootNode ;
    var
        pID:integer;
        aNode: TTreeNode;
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('select * from deptab where depfID=0');
      Query1.Open;  while not Query1.Eof do
      begin
        pID:=Query1.FieldByName('depid').AsInteger;    
        aNode := TreeView_dep.Items.Add(nil, Query1.FieldByName('depname').asstring);
        Query1.Next;
      end;
    end;
      

  2.   

    procedure loadRootNode 
    ->
    procedure tform1.loadRootNode
      

  3.   

    PNodeRec 要看你对他的限制了,是允许其他单元访问还是只对当前单元有效procedure loadRootNode实现部分改为 procedure TForm1.loadRootNode
      

  4.   

    我试了,好象不行
    仍然在过程loadRootNode 中报Query1和TreeView_dep没有定义
    请问还有什么错误吗?
      

  5.   

    像这个QUERY1如果在这个函数以外不用的话,可以直接在这个函数里面声明,这是一种好的习惯。