*** 1 ***
Treeview 控件中 TTreeNode中如何加入节点的代码信息?案例:
  
   现在我用树表示地区信息,地区存储有两部分内容:代码(001) 与名称(北京),北京在NODE中显示在TEXT属性中,那我的代码存放在NODE什么属性中呢?因初学DELPHI,代码能力不行,如方便请把代码贴上来,谢谢!*** 2 ***
在DELPHI中是不是可以知道一个类名就可以自动创建他?案例:我项目中实现了三个类:TCLS1,TCLS2,TCLS3,一般创建这个类都是通过定义变量再create,如 
var 
   cls1 : TCLS1;
begin
   cls1 := TCLS1.Create(self);
end ;但我现在要动态实现这三个类,我在外部存储(如数据库)了三个类的名字,我现在想根据这三个类的名字(字符串)可以动态加载他们,可以嘛?

解决方案 »

  1.   

    1.可以存储在Items[].Data里面,具体代码可以这样
    var 
      Code :PInteger;
    begin
      Code^ := 001;  
      TreeView1.Items[0].Data := Code;  //必须保证你的TreeView1有一个节点,否则会发生异常
      ShowMessage(IntToStr(PInteger(TreeView1.Items[0].Data)));
    end;
    2.需要用到RTTI,比较麻烦,你自己考虑使用其他方式代替比较好
      

  2.   

    1.用Treeview节点的Data属性,你定义一个记录,再用一个指针指向它,加处Data就OK。
    2.可以。用时要判断其是否已创建,否则会引起地址错误。
    3.Treeview之Data用法你可以搜索相关资料,http://www.xmflyfish.com/awind/permis.rar中我有用到,你可以下载查看,http://www.xmflyfish.com/awind/apermis.exe是程序,你可以看其效果,在员工资料窗体。
      

  3.   

    *** 1 ***
    var
      SelNode,TipNode:TTreeNode;
      NewsID:Integer;
    begin
      SelNode:=tvFile.Selected;
      NewsID:=1; //北京编码
      //添加节点
      TipNode := tvFile.Items.AddChild(SelNode,'北京');
      TipNode.ImageIndex := 1;
      TipNode.SelectedIndex := 2;
      TipNode.StateIndex:=NewsID;  //就是它了,简单 
      TipNode.MakeVisible;
    end;
      

  4.   

    用下面的方法可以给TreeView添加Data
    type
      PMyRecord = ^MyRecord;
      MyRecord = record
               ID : integer;
               name:string;
               end;//end of recordvar
      p : PMyRecord;
    begin
      new(p);
      p.ID := 代码;
      p.name := 名称;
      TreeView1.Items.AddChildObject(Node, p.name, p);
      //dispose(p);//一定要去掉这条语句,不然的话,Treeview中的Data也被dispose掉了。
    end;使用
    PMyRecord(Treeview1.Selected.Data).ID
    PMyRecord(Treeview1.Selected.Data).name
      

  5.   

    DelphiBoy2003(一朵梨花压海棠,玉树临风胜潘安) ( ) 兄似乎更简便一些
      

  6.   

    关于TREEVIEW问题现在结贴,CLASS的问题新建貼。请专家关注一下,谢谢!
      

  7.   

    http://expert.csdn.net/Expert/topic/2844/2844181.xml?temp=.8033869
    请大家关注,谢谢!