Ahora que has comentado lo de RTTI, se me ha ocurrido otra forma de hacerlo durante la ejecución, en la que no haría falta modificar el código fuente de los DFM.
(1) Poddemos capturar la apertura de un formulario utilizando:
Código Delphi
[-]
Screen.OnActiveFormChange := FormChange;
(2) Y en ese momento podemos modificar en ejecución todos los TDBGrid que existan en ese formulario cambiandoles la propiedad ReadOnly.
Código Delphi
[-]
procedure TForm1.FormChange(Sender: TObject);
var
f:TForm;
i:integer;
grid:TDBGrid;
begin
if Assigned(Screen.Activeform) then begin
f := Screen.Activeform;
for i := 0 to (f.ComponentCount - 1) do begin
if (f.Components[i] is TDBGrid) then begin
grid := TDbGrid(f.Components[i]);
grid.Color := clMoneyGreen;
end;
end;
end;
end;
Lo he probado con un ejemplo y en mi caso en diseño todos los DBGrid son blancos y en ejecución les cambio el color (pero podría cambiar el ReadOnly).