想做一个函数
传入 integer 型的 i
返回 控件实例 Editi
即   传入 6
    可以得到  Edit6 的实例
   传入 8
    可以得到  Edit8 的实例
好象要用到 GetClass 什么的,是吗?
请指教

解决方案 »

  1.   

    摘自超级猛料
    看有用否?
    回答一个鬼佬的提问写的代码。我希望根据一个字符串,来创建该类的对象,例如我给定'TButton',那么能在运行的时候,动态创建Button出来?不要告诉我用if来判断或者用case来判断等等~,那样的话,有几百个控件的话,岂不是晕倒?请参考下面的代码,下面的代码演示了三种控件的动态创建,若需要动态创建其他的,请修改那个数组常量即可:function DynCreateControlByName(AClassName: string; AOwner: TWinControl = nil): TControl;const/// You can add any class if you want!ControlClass : array[0..2] of TPersistentClass = (TButton, TEdit, TLabel);varCls : TControlClass;beginResult := nil;RegisterClasses(ControlClass);Cls := TControlClass(GetClass(AClassName));if Cls = nil then exit;Result := Cls.Create(AOwner);end;procedure TForm1.Button1Click(Sender: TObject);varControl : TControl;beginControl := DynCreateControlByName(Edit1.Text);if Control <> nil thenwith Control dobeginParent := Self;Left := Random(Self.Width) - Width;Top := Random(Self.Width) - Height;Perform(WM_SETTEXT,Length(Edit1.Text),integer(pchar(Edit1.Text)));Show;end;end;---------------------------------------procedure TForm1.Button2Click(Sender: TObject);beginTWinControlClass(FindClass('TQRDBText')).Create(Self);end;initializationRegisterClasses([TQRDBText]);finalizationUnregisterClasses([TQRDBText]);end.
      

  2.   

    谢谢:goodloop(小志) !
    但是我想要的是,比如现在已经有了
    ADOQuery1,ADOQuery2,ADOQuery3
    而我想    只传入 (2,'select * from Table1')
    就 在 ADOQuery2 中执行了SQL语句,
    但是不想用  case i of   2 : ... ...  
    因为可能有很多的ADOQuery,
    可以解决吗?  (>_<")
      

  3.   

    TEdit(FindComponent('Edit' + Edit1.Text)).Text:= 'success';
      

  4.   

    哦。。呵呵..那直接用findcomponent就可以了