本帖最后由 xltg123 于 2013-12-25 16:08:32 编辑

解决方案 »

  1.   

    property是object,getpropinfo可以知道classname,通过classname判断类型;
    需要注意的是,访问的属性,必须是published域
      

  2.   

    谢谢二位的回复,我对于字串形式的属性如Caption,DataSource.Name等都取值没有问题。就是这个没有成功。
      

  3.   

    不是说了?Published!
    Strings.text是public。
      

  4.   

    谢谢Avan_Lau,
    那您说我这个SQL值如果获取?
      

  5.   

    另外,我获取了PropInfo,用:
    PropInfo := GetPropInfo(obj, str_prop, tkAny);
    if PropInfo = nil then exit;
    Result := PropInfo^.PropType^.Name;这样,我只能获取PropType的Name,而PropInfo没有ClassName。
    用上方法,Datasource.DataSet永远返回的都是TDataSet。我想根据DataSet所用的不同,应该返回TADOQuery, TADODataSet,或TADOTable这样的结果,如果获取?
      

  6.   

    我获取了PTypeData,从而可获取ClassName,但是DataSource.DataSet的ClassName还是TDataSet。那么这个DataSet关联的值如何能获得TADODataSet,TADOTable这样的值呢?
      

  7.   

    都知道取SQL属性了,怎么还去关心是什么类型的dataset。
    参考以下演示代码var
      AObj: TObject;
    begin
      AObj := GetObjectProp(Memo1, 'Lines');
      if (AObj <> nil) and (AObj is TStrings) then
        ShowMessage(TStrings(AObj).Text);Memo1-------->DataSource.DataSet
    Lines-------->SQL