Pues sería sencillo, añadiendo un método virtual, p. ej. DoOnShow (no sé si ya exista) que sea virtual.
Desde el padre, en el evento OnShow, llama a éste método, el cual se encarga de ejecutar lo del dataset que dices.
El formulario hijo sólo tendrá que sobreescribirlo y no llamar a inherited, por lo que dejaría de ejecutarse:
//El padre:
Código Delphi
[-]
TFormPadre.OnShow(...)
begin
DoOnShow;
ActNuevo.Enabled := not (IsReadOnly);
ActGuardar.Enabled := not (IsReadOnly);
ActEditar.Enabled := not (IsReadOnly);
ActDeshacer.Enabled := not (IsReadOnly);
ActEliminar.Enabled := not (IsReadOnly);
end;
TFormPadre.DoOnShow;
begin
if (IsABMDetail = false) and (IsABMLookup = false) and
not (TfrmGenericGrid(MainForm.ActiveMDIChild).Entidad[6] = 'T') then
dsChild.DataSet := TfrmGenericGrid(MainForm.ActiveMDIChild).cdsMaster;
end;
El hijo:
Código Delphi
[-]
TFormHijo=class (TFormPadre)
protected
procedure DoOnShow; override;
end;
procedure TFormHijo.DoOnShow;
begin
end;
Un saludo,
LoPiTaL