窗口上有
DBEdit
RzDBEdit
ADBEdit
BDBEdit
CDBEdit
但是他们的父类都不是TDBEdit
如何给所有的有  DataSource属性的组件赋值呢?
SetPropValue  好像不行哦

解决方案 »

  1.   

    都有DataSource属性吧,把一个DataSource1给DBEdit的DataSource不行?
      

  2.   

    SetObjectProp  可以实现.谢谢
      

  3.   

    for k := 0; k < Self.Controls.Count do begin
      if Controls[k] is RzDBEdit then
        (Controls[k] as RzDBEdit).DataSoure := DataSoure1
      else if ...
      ...
    end
    其中Self是当前窗体
      

  4.   

    hulihui 谢谢你!
    我的问题是:不知道控件的父类比方说,from1上有datasource属性的控件  有十万个.
    那 if else if 就很痛苦了
    下面贴下我的代码var
    i:integer;
    begin
    for i:=0 to ComponentCount-1 do
    begin
              if Assigned(GetPropInfo(Components[i],'DataSource')) then
              begin
                  SetObjectProp(Components[i], 'DataSource', datasource1 );    
              end;
    end;
    end;
      

  5.   

    对了怎么读取 datasource 的名称呢?
      

  6.   

    TDataSource(integer(getpropvalue(Components[i],'DataSource',True))).Name哦也
    做个笔记
    散分
    看来要好好看看RTTI了,真好使!