我不明白到底是怎么实现的。
哪里有关于用指针操作treeview的方法详细介绍么?
或者哪位给些讲解也好。谢谢,先,分数一定有

解决方案 »

  1.   

    详细点!
    具体指哪方面的?TreeNode.Data?
      

  2.   

    TreeView.Items.Add(NULL,你想加的内容);  在最后加一条
                        这里NULL可以换成一个TreeNode做为父节点
    TreeView.Selected.Delete();  删除你选定的那条TreeView.Items.Item[0.Focused := true 选定第一个节点
      

  3.   

    就是用指针来操作treeview,来实现将数据库的内容加载到treeview
      

  4.   

    来实现将数据库的内容加载到treeview不用指针具体操作请使用CSDN的查询功能,关键字为‘treeview’
      

  5.   

    http://expert.csdn.net/Expert/topic/1335/1335073.xml?temp=.7552149
    http://expert.csdn.net/Expert/topic/1335/1335256.xml?temp=.3093531
    看看这两个问题吧,答对了重重有分啊
      

  6.   

    我用的指针和treeview:
    procedure tmain.RootTree(treeview1:ttreeview);
    var
      query:TADOQuery;
      nodetemp:TTreenode;
      pstr:^string;
      str:string;
    begin;
      query:=TADOquery.Create(self);
      query.Connection:=data.BgConnection;
      with query do
      begin
        sql.Text:=str;
        open;
        if eof then exit;
        nodetemp:=nil;
        while not eof do
        begin
          new(pstr);
          pstr^:=fieldbyname('key').AsString;
          nodetemp:=treeview1.Items.AddObject(nil,fieldbyname('xname').AsString,pstr);
          next;
        end;
      end;
      while nodetemp<>nil do
      begin
        CreateTree(query,nodetemp,treeview1);
        nodetemp:=nodetemp.getPrevSibling;
      end;
      treeview1.Items.EndUpdate;
    end;procedure tmain.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode;treeview1:ttreeview);
    var
      pstr1, pstr2 : ^string;
      i : integer;
      NodeTemp : TTreeNode;
    begin
      QuerySource.close;
      pstr1 := NodeParent.Data;
      QuerySource.Sql.Text := 'SELECT key,xcode,xname FROM xzdm WHERE right(xcode,7)='+''''+'0000000'+''''+' and parent = ' + '''' + pstr1^ + '''';
      QuerySource.open;
      QuerySource.First;
      if QuerySource.RecordCount = 0 then exit;  NodeTemp := nil;
      for i := 0 to QuerySource.RecordCount - 1 do
      begin
        new(pstr2);
        pstr2^ := QuerySource.FieldByName('key').AsString;
        NodeTemp := TreeView1.Items.AddChildObject(NodeParent,
          QuerySource.FieldByName('xname').AsString, pstr2);
        QuerySource.Next;
      end;  while NodeTemp <> nil do
      begin
        CreateTree(QuerySource, NodeTemp,treeview1);
        NodeTemp := Nodetemp.getPrevSibling;
      end;
    end;
      

  7.   

    unit Unt_FrmManager;
    ...
    type
      PID = ^CurID;
      CurID = record
        ID: Integer;
      end;  TFrmManager = class(TForm)
    ...
      private
        { Private declarations }
        procedure InitTrvManager; //初始化树
        procedure DisposeTrv;     ////销毁指针 
    ...
    var
      TrvArr: array of PID; //数组
      MaxR: Integer;        //MaxR 指针数组数
     
    ...
    procedure TFrmManager.InitTrvManager;
    var
      TempNode, NodeApp: TTreeNode;
      TempID, pp: integer;
    begin
      TrvMod.Items.BeginUpdate;
      TrvMod.Items.Clear;
      DisposeTrv;
      pp := 0;  InitCliDS; //刷新数据集  SetLength(TrvArr, MaxR);
      with TrvMod.Items do
      begin
        TempNode := Add(nil, '[应用]');
        with CliDSApp do
        begin
          First;
          while not Eof do
          begin
            TempID := FieldByName('ID').AsInteger;
            NodeApp := AddChild(TempNode, FieldByName('AppName').AsString);
            New(TrvArr[pp]);
            TrvArr[pp]^.ID := TempID;
            NodeApp.Data := TrvArr[pp];
            Inc(pp);
            Next;
          end;
        end;
      end;
      TrvMod.Items.EndUpdate;
    end;
    ...procedure TFrmManager.DisposeTrv; //销毁指针
    var
      i: Integer;
    begin
      try
        for i := 0 to MaxR - 1 do 
          Dispose(TrvArr[i]);
      except
      end;
    end;
    ...使用:
    CurAppID := PID(TrvMod.Selected.Data)^.ID; 
    //获得当前选中节点对应的数据(ID)