写的多好啊。。
tmd一句没看懂。。

解决方案 »

  1.   

    1:
    function BuildTree(DataSet: TADODataSet; TV: TTreeView; SelfField,SelfName,ParentField:String):boolean;
    { 以下子函数为在表中查找第一个PNode=AIndex的记录}//函数不用begin……end?
    FindKey、FindNext、GetChildNode和BuildMe是BuildTree的子函数,BuildTree的主体部分还没有开始呢,当然不需要有begin...end.代码中最后的注释“//组合部份”后面才是它的主体。
    2:
    function FindKey(AIndex: integer; FFirst:boolean): boolean;//AIndex哪来的?FFIRST,又是传递的那的?
    这些都是函数的参数呀!在后面的代码中有调用代码:
       if FindKey(index,true) then
    3:
    Result:=DataSet.FieldValues[ParentField]=AIndex;//=AINDEX是什么意思?DELPHI怎么有这样的格式?
    Result 是一个Boolean型的变量,DataSet.FieldValues[ParentField]=AIndex是一个关系运算,其运算结果是Boolean型的,当然可以赋值给Result.这是标准的Pascal语法。
    4:
          with DataSet do
          begin
            MyNode^.FID :=FieldValues[SelfField];
            MyNode^.FBM :=GetBook;//getbook是什么意思?哪里得到的书签?
          end;
    注意上面的with Dataset do,所以这句相当于:
            MyNode^.FBM :=DataSet.GetBook;
    建议你先好好学一学Object Pascal的语法。
      

  2.   

    好,轻风,谢谢!也就是说
    从最后的调用buildme(0,nil)开始,程序开始运行,依次到getchildnode(aindex,anode),递归调用buildme(pnode(node.data)^.fid,node);然后调用getchildnode时执行findkey,findnext
    对吗?那,如果我想对这颗树的每一接点(即每个记录)进行操作,如进行统计,该怎么做?
      

  3.   

    怎么都不理我呀?
    又有不理解
    procedure BuildMe(AIndex: integer; ANode: TTreeNode);
        begin
            BuildMe(PNode(Node.Data)^.FID,Node);//pnode(node.data)是什么意思?
     ……
      

  4.   

    以当前节点的FID为Index,当前节点为ANode调用BiuldMe,应该是查找当前节点的子节点并创建子树.     轻风又伤心了:2002-06-04
         ____     ____
         \ p \   / g /
          \ l \_/ n /
           \ a   o /
            \ i s /
             \ n /
              \_/
      

  5.   

    以当前节点的FID为Index,当前节点为ANode调用BiuldMe,应该是查找当前节点的子节点并创建子树.     轻风的哥哥又伤心了:2002-06-04
         ____     ____
         \ p \   / g /
          \ l \_/ n /
           \ a   o /
            \ i s /
             \ n /
              \_/