设有一表tree内有三字段(code,name,num),num为数值型,code,name为字符型。
procedure TForm1.FormActivate(Sender: TObject);
var
i,j:integer;
MyNode:array[0..6]of TTreeNode;
nodename:string;
begin
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('select code,num,name from tree order by code');
query1.Open ;
query1.First ;
for i:=1 to query1.RecordCount  do
begin
   nodename:=query1.FieldValues ['name'];
   if query1.FieldValues ['num']=1 then
    begin
      mynode[1]:=tw1.Items.Add(tw1.TopItem,nodename);
      mynode[1].ImageIndex :=1;
    end
   else
    begin
     j:=query1.FieldValues ['num'];
     mynode[j]:=tw1.Items.Addchild(mynode[j-1],nodename);
     mynode[j].ImageIndex :=2;
    end ;
    query1.Next;
end ;end;
通过以上代码我可以将name根据级数分别加入treeview,但我怎么将code也加入treeview中呢?因为当我点击一个结点时,我不但要知道其显示内容我还想知道
其对应的编码。(这样我才能将treeview与数据表相关联)
望知情者赐教,举例说明不甚感激。

解决方案 »

  1.   

    delphi的帮助里有的,如下:The following code defines a record type of TMyRec and a record pointer type of PMyRec.type
    PMyRec = ^TMyRec;
    TMyRec = record
      FName: string;
      LName: string;
    end;Assuming these types are used, the following code adds a node to TreeView1 as the last sibling of a specified node. A TMyRec record is associated with the added item. The FName and LName fields are obtained from edit boxes Edit1 and Edit2. The Index parameter is obtained from edit box Edit3. The item is added only if the Index is a valid value.procedure TForm1.Button1Click(Sender: TObject);var
      MyRecPtr: PMyRec;
      TreeViewIndex: LongInt;
    begin
      New(MyRecPtr);
      MyRecPtr^.FName := Edit1.Text;
      MyRecPtr^.LName := Edit2.Text;
      TreeViewIndex := StrToInt(Edit3.Text);
      with TreeView1 do
      begin
        if Items.Count = 0 then
          Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
        else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then      Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
      end;
    end;After an item containing a TMyRec record has been added, the following code retrieves the FName and LName values associated with the item and displays the values in a label.procedure TForm1.Button2Click(Sender: TObject);begin
      Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
                      PMyRec(TreeView1.Selected.Data)^.LName;
    end;
      

  2.   

    用一个TStringList来存储Code的内容,并使节点的指针(node.data)指向某一项.
    访问时用String(node.data)转化即可.
      

  3.   

    将CODE和NAME一起放在treeview中用的时候进行分解不就可以了吗?procedure TForm1.FormActivate(Sender: TObject);
    var
    i,j:integer;
    MyNode:array[0..6]of TTreeNode;
    nodename:string;
    begin
    query1.Close ;
    query1.SQL.Clear ;
    query1.SQL.Add('select code,num,name from tree order by code');
    query1.Open ;
    query1.First ;
    for i:=1 to query1.RecordCount  do
    begin
       nodename:=query1.FieldValues ['code']+':'+query1.FieldValues ['name'];
       if query1.FieldValues ['num']=1 then
        begin
          mynode[1]:=tw1.Items.Add(tw1.TopItem,nodename);
          mynode[1].ImageIndex :=1;
        end
       else
        begin
         j:=query1.FieldValues ['num'];
         mynode[j]:=tw1.Items.Addchild(mynode[j-1],nodename);
         mynode[j].ImageIndex :=2;
        end ;
        query1.Next;
    end ;end;在使用时分析':'前面的就是你要的CODE;
      

  4.   

    推荐  menliwxj(有缘) 的方法!
    TreeView 中每 个 node 中的属性 Data 就是用来存储接点附加数据的。
      

  5.   

    我的做法:在TTreeNode 类里增加一个ID字段,然后重编译ComCtrls单元
      

  6.   

    to  jixinfa(DELHPI程序员) :
    难道你这样显示给用户看:001汽车
                          002飞机
    ????????????????????????????????
    to : menliwxj(有缘) 
    procedure TForm1.Button2Click(Sender: TObject);begin
      Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
                      PMyRec(TreeView1.Selected.Data)^.LName;
    end;这里出错。Label1.Caption := myrecptr(tw1.Selected.date)^.FName ;   这句话运行不了。