我想在一个过程中传一个参数,可能是TButton,也可能是TDBEdit或TEdit等,也就是我传什么组件就是什么,那么我这个参数应该定义为什么类型的,我定义为TObject不行,比如下边的例子:
procedure TDataSetInsert.ExecuteTarget(Target: TObject);
begin
  Target.SetFocus;  //TObject没SetFocus这个属性,应该定义为什么类型
end;

解决方案 »

  1.   

    应该是可编辑的对话框
    如TEdit,TMemo,TListBox等等
    而像按扭TButton就没有这个属性
      

  2.   


    procedure ExecuteTarget(Target: TObject);
    begin
      if Target is TButton then
      (Target As TButton).SetFocus;
      if Target is TEdit then
      (Target As TEdit).SetFocus;
    end;
      

  3.   

    procedure TDataSetInsert.ExecuteTarget(Target: TWinControl); 
    begin 
      if Target is TWinControl then
        if TWinControl(Target).CanFocus then
          TWinControl(Target).SetFocus; 
    end;
      

  4.   

    定义为TWinControl 要引用哪个类
      

  5.   

    procedure TDataSetInsert.ExecuteTarget(Target: TWinControl); 
    begin 
      if Target is TWinControl then 
        if TWinControl(Target).CanFocus then 
          TWinControl(Target).SetFocus; 
    end;
      

  6.   

    这个类型就可以
    procedure TDataSetInsert.ExecuteTarget(Target: TObject); 
    begin 
       if Target is TButton then
         (Target as Tbutton).SetFocus;
       if Target is TEdit then
         (Target as TEdit).SetFocus;
       if Target is TDBEdit then
         (Target as TDBEdit).SetFocus;
    end;
      

  7.   

    TButton,TDBEdit,TEdit都是从TWinControl继承下来的,所以在这里用TWinControl就是最合适的