例如有对象;
type
  TMyclass1 = class()
    FID string;
    FName string;
    protected
      procedure setID(AValue: string);
      procedure setName(AValue: string);
    public
      property ID string read FID write setID;
      property Name string read FName write SetName;
   end;现在我想根据一个字符串的值(‘ID’,'Name')来设置类型的属性值;有没有办法啊?procedure setMyclassProperty(var AValue: string);
begin
  TMyclass.setproperty('ID','IDValue');
end;

解决方案 »

  1.   

    uses TypInfo;type
    {$M+}
      TMyclass1 = class
      private
        FID: string;
        FName: string;
      protected
        procedure SetID(AValue: string);
        procedure setName(AValue: string);
      published
        property ID: string read FID write SetID;
        property Name: string read FName write SetName;
      end;
    {$M-}{ TMyclass1 }procedure TMyclass1.SetID(AValue: string);
    begin
      FID := AValue;
    end;procedure TMyclass1.setName(AValue: string);
    begin
      FName := AValue;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      vMyclass1: TMyclass1;
    begin
      vMyclass1 := TMyclass1.Create;
      SetPropValue(vMyclass1, 'ID', 'Zswang');
      ShowMessage(vMyclass1.ID);
      SetPropValue(vMyclass1, 'Name', '路过');
      ShowMessage(vMyclass1.Name);
      vMyclass1.Free;
    end;
      

  2.   

    可以,用RTTI。等等,写个例子给你。
      

  3.   

    谢了伴水;
    我记得是RTTI的某个事件;
    以为是setproperty;找了半天没找到;
    忘记是在那个类里实现的了;^_^;
    给分了。