看到一段文字是关于treeview的,有几句在程序中不可以通过。
无限树型.看看罗,我调试通过了!
先定义
       PNodeInfo=^TNodeInfo;    //指针类型,存储对应节点信息
       TNodeInfo=Packed Record  
//以上两句有问题,在编译不通过,我从没见过这样定以数据类型或变量的
       NodeId:String;        //节点
       NodeName:string;      //节点名称
       ParentId:string;      //父节点
    end;定义函数procedure Tform.CreateTree(Id: integer;ParentNode:TTreeNode);
var
    QryTmp:TSQLQuery;
    MyNode:TTreeNode;
    TmpNodeInfo:PNodeInfo;
begin
    QryTmp:=TSQLQuery.Create(self);
    QryTmp.SQLConnection:=SQLConnection;
    QryTmp.SQL.Add('Select Nodeid,Parentid,Nodename From Policy_tree Where ParentId='+IntToStr(Id)+' Order by NodeId');
    QryTmp.Open;
    MyNode:=nil;
    while not QryTmp.Eof do
    begin
      New(TmpNodeInfo);
      TmpNodeInfo.Nodeid:=Trim(QryTmp.Fields[0].AsString);
      TmpNodeInfo.Parentid:=Trim(QryTmp.Fields[1].AsString);
      TmpNodeInfo.Nodename:=Trim(QryTmp.Fields[2].AsString);
      MyNode:=TView.Items.AddChildObject(ParentNode,QryTmp.Fields[2].AsString,TmpNodeInfo);  //把所有节点当作子节点遍历
      CreateTree(QryTmp.Fields[0].AsInteger,MyNode); //递归调用
      QryTmp.Next;
    end;
    QryTmp.Free;
end;调用
     //显示树型
     CreateTree(0,nil);

解决方案 »

  1.   

    这段应该放在Type 后面。如:
    Type:
           PNodeInfo=^TNodeInfo;    //指针类型,存储对应节点信息
           TNodeInfo=Packed Record  
    //以上两句有问题,在编译不通过,我从没见过这样定以数据类型或变量的
           NodeId:String;        //节点
           NodeName:string;      //节点名称
           ParentId:string;      //父节点
        end;  Tform1=class(Tform)
       ...
      

  2.   


           PNodeInfo=^TNodeInfo;    //指针类型,存储对应节点信息
           TNodeInfo=Packed Record  
    //以上两句有问题,在编译不通过,我从没见过这样定以数据类型或变量的
           NodeId:String;        //节点
           NodeName:string;      //节点名称
           ParentId:string;      //父节点
        end;定义函数procedure Tform.CreateTree(Id: integer;ParentNode:TTreeNode);
    var
        QryTmp:TSQLQuery;
        MyNode:TTreeNode;
        TmpNodeInfo:PNodeInfo;
    begin
        QryTmp:=TSQLQuery.Create(self);
        QryTmp.SQLConnection:=SQLConnection;
        QryTmp.SQL.Add('Select Nodeid,Parentid,Nodename From Policy_tree Where ParentId='+IntToStr(Id)+' Order by NodeId');
        QryTmp.Open;
        MyNode:=nil;
        while not QryTmp.Eof do
        begin
          New(TmpNodeInfo);
          TmpNodeInfo.Nodeid:=Trim(QryTmp.Fields[0].AsString);
          TmpNodeInfo.Parentid:=Trim(QryTmp.Fields[1].AsString);
          TmpNodeInfo.Nodename:=Trim(QryTmp.Fields[2].AsString);
          MyNode:=TView.Items.AddChildObject(ParentNode,QryTmp.Fields[2].AsString,TmpNodeInfo);  //把所有节点当作子节点遍历
          CreateTree(QryTmp.Fields[0].AsInteger,MyNode); //递归调用
          QryTmp.Next;
        end;
        QryTmp.Free;
    end;调用
         //显示树型
         CreateTree(0,nil);能通过的呀我的树也是这样做的你在类声明前面要加type的再试吧