1。我在RzCheckTree中建了棵树
   代码如下://只建了两级
type
    PTree=record
        Code:string;
        Name:string;
    end;
    PModule=^PTree;
procedure TFrmRightSet.BuildTopTree(FatherNode:TTreeNode;ADOCon:TADOConnection);//FatherNode:±íʾҪÌí¼Ó½ÚµãµÄ¸¸Ç×½Úµã
var
  P:PModule;
  ADODa_tem:TADODataSet;
begin
  try
  ADODa_tem:=TADODataSet.Create(Application);
  ADODa_tem.Connection:=ADOCon;
  with ADODa_tem do
    begin
      Close;                                                            // where SupRiCode <> null and SupRiName <> null
      CommandText:='select distinct SupRiCode,SupRiName from R_RIGHTLIST where menulevel=''2'' ';
      Open;
    end;   while not ADODa_tem.Eof do
     begin
        new(p);
        P.Code:=ADODa_tem.FieldByName('SupRiCode').AsString;
        P.Name:=trim(ADODa_tem.FieldByName('SupRiName').AsString);
        FatherNode:=RzCTree_RightList.Items.AddChildObject(RzCTree_RightList.TopItem,P.Name,P);        FatherNode.ImageIndex:=1;
        FatherNode.SelectedIndex:=2;
        BuildTree_2(FatherNode,P.Code,ADOCon);
        ADODa_tem.Next;
     end;
  finally
    ADODa_tem.Free;
  end;
end;procedure TFrmRightSet.BuildTree_2(FatherNode:TTreeNode;SupRiCode:string;ADOCon:TADOConnection);
var
  P:PModule;
  ADODa_tem:TADODataSet;
  TreeNode:TTreeNode;
begin
  try
  ADODa_tem:=TADODataSet.Create(Application);
  ADODa_tem.Connection:=ADOCon;
  with ADODa_tem do
    begin
      Close;                                                            // where SupRiCode <> null and SupRiName <> null
      CommandText:='select  RightCode,RightName from R_RIGHTLIST where SupRiCode='''+trim(SupRiCode)+''' order by MenuPos ';
      Open;
    end;   while not ADODa_tem.Eof do
     begin
        new(p);
        P.Code:=ADODa_tem.FieldByName('RightCode').AsString;
        P.Name:=trim(ADODa_tem.FieldByName('RightName').AsString);
        TreeNode:=RzCTree_RightList.Items.AddChildObject(FatherNode,P.Name,P);
        TreeNode.ImageIndex:=1;
        TreeNode.SelectedIndex:=2;
        ADODa_tem.Next;
     end;
  finally
    ADODa_tem.Free;
  end;
end;
问:怎么取的任意节点的code,name?2:比如我有个值Temp
  我用刚才方法建的树中有个节点的name和这个temp值一样,我如何找到这个节点,并将这个节点前面的选择框钩上。
两个问题估计都只几行代码就可以解决。
对Raize控件比较熟悉的大侠帮帮我了,谢谢。

解决方案 »

  1.   

    无论几级ITEMS都是按顺序排下来的,所以循环一下就可以了
    for i:=0 to checktree1.items.count-1 do
    begin
     if checktree1.items[i].text=temp then
        checktree1.StateIndex=2;
    end;
      

  2.   

    to: hsmserver(撒哈拉之雨的悲伤) 大侠
        谢谢你哦~~````
        又是你回答我的问题。
        上面的问题都解决了,其实,我是在checktree1.items.count后面忘了-1
        所以搞了半天没搞出来,总报错说节点错误什么的。
        呵呵,以后还望多指教啊~~``````