那么如何设置这个属性的值呢?    for i:=ControlCount-1 downto 0 do
    begin
       if GetPropInfo(Controls[i], 'DataSource')<>nil  then
       begin
          //如何设置这个DataSource的属性为一个已存在的TDataSource的对象(如
          // DataSource1)
          //SetVariantProp(Controls[i],'DataSource',DataSource1);
          //上面这条好象不行,编译报错.
       end;
    endhttp://community.csdn.net/Expert/topic/3173/3173368.xml?temp=.7682764

解决方案 »

  1.   

    uses
      TypInfo;
    ...
    procedure SetDataSource(Comps: array of TControl; DS: TDataSource);
    var
      Loop: Integer;
      PropInfo: PPropInfo;
    begin
      for Loop := Low(Comps) to High(Comps) do
      begin
        { Get info record for DataSource property }
        PropInfo := GetPropInfo(Comps[Loop].ClassInfo, 'DataSource');
        { If property exists, set value to DS }
        if Assigned(PropInfo) then
          SetOrdProp(Comps[Loop], PropInfo, Longint(DS));
      end;
    end;
    ...
    Table1.Open;
    SetDataSource([DBEdit1, DBText1, DBNavigator1], DataSource1);
      

  2.   

    http://community.csdn.net/Expert/topic/3173/3173368.xml?temp=.7682764
    上述问题已经OK了,
    我现想知道哪些组件是容器类,如TForm,TPanel,TTabSheet... 可以通过什么属性或方法能够判断出此组件是属容器类. 可不可以能过ControlCount 或 ComponentCount 这两个属性来判断呢? 另这两个属性有什么不同呢?谢谢