uses
  TypInfo;参考SetStrProp(),GetStrProp()...........

解决方案 »

  1.   

    你可以把TComboBox的name改一下啊
      

  2.   

    你需要建立一个Tbutton类型的指针,下面是简单的例子
    procedure TForm1.Button1Click(Sender: TObject);
    var x:^Tbutton;
    begin
      new(x);
      x^:=button1;
      form1.caption:=x^.Caption;
    end;
      

  3.   

    哦,对了,上面仅以Tbutton为例了,其他大同小异
      

  4.   

    变量是不能当作控件使用的
    你每次用val()
    都要给 val赋值为什么不直接用TComboBox(Sender)呢?不知道有没有一个函数可以在知道了类名的情况下把某个变量转变成该种类
      

  5.   

     if Sender.classname='TEdit' then
       (Sender as TEdit).color:=clsilver;if sender.classname='TComboBox' then
         (sender as TComboBox).color:=clsilver;
      

  6.   

    各位:
    我的意思是Val是一个变量,是一个存放了诸多种wincontrol类名的变量
    如它可能的值:TEdit,TButton...
    然后在不需要if Sender.classname='TEdit' then的情况下
    将sender TEdit化
    如tramplyc所说
    "不知道有没有一个函数可以在知道了类名的情况下把某个变量转变成该种类"
    类似于变量的变量
      

  7.   

    按经验,这样写是不行的,如
    function var(Sender: TObject) : TObject ;//TWincontrol
                                TObject.className 本身并不知道
    begin
        if Sender.ClassName = 'TEdit' then 
           Result := TEdit(Sender)
        else if Sender.ClassName = 'TButton' then 
           Result := Tbutton(Sender)
    ........
         传进去是TObject出来还是TObject没有意义,应该没有什么办法来代替end;
    如果你调用的时候用
        Var(Sender).Property,这样在编译时是通不过的
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      vComponentClass: TComponentClass;
    begin
      vComponentClass := TForm;  with TForm(vComponentClass.Create(Self)) do try
        ShowModal;
      finally
        Free;
      end;
    end;
      

  9.   

    不行的。
    你的val是字符型,不可以强制转化成类的!!!