Como alterar a propriedade DataSource de diversos controles data-aware de uma só vez
Se você precisa alterar a propriedade DataSource de diversos controles data-aware que não possuem um ancestral em comum, você pode utilizar o RTTI (run-time type info) do Delphi e chamar apenas um procedimento. Como funciona:
uses TypInfo;
...
procedure ApplyDataSource(dbCtrls: array of TControl; DS: TDataSource) ;
var
cnt: Integer;
PropInfo: PPropInfo;
begin
for cnt := Low(dbCtrls) to High(dbCtrls) do
begin
PropInfo := GetPropInfo(dbCtrls[cnt].ClassInfo, 'DataSource') ;
if Assigned(PropInfo) then
SetOrdProp(dbCtrls[cnt], PropInfo, LongInt(DS)) ;
end;
end;
...
Forma de utilizar:
ApplyDataSource([DBNavigator1, DBText1, DBButton1], DataSource1);