Yo tengo una forma base con una funcion que me crea los datamodulos
Código Delphi
[-]
interface
type
TDataModuleClass = class of TDataModule;
TfrmBase = class(TForm)
protected
function CrearDataModulo(sNombre: string): TDataModule;
end;
implementation
function TfrmBase.CrearDataModulo(sNombre: string): TDataModule;
begin
sNombre:= StringReplace(sNombre, 'frm', 'dm', []);
Result:= TDataModuleClass(GetClass(sNombre)).Create(Self)
end;
Luego en la forma que ocupa crear el datamodulo por ejemplo un catalogo base tengo
Código Delphi
[-]
interface
type
TfrmCatalogo = class (TfrmBase)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FCatalogo: TdmCatalogo;
end;
implementation
procedure TfrmCatalogo.FormCreate(Sender: TObject);
begin
inherited;
FCatalogo:= CrearDataModulo(ClassName) as TdmCatalogo
end;
procedure TfrmCatalogo.FormDestroy(Sender: TObject);
begin
inherited;
FreeAndNil(FCatalogo)
end;
Ademas tengo un datamodulo base para los catalogos
Código Delphi
[-]
type
TdmCatalogo = class(TDataModule)
dtsCatalogo: TIBDataSet;
dsCatalogo: TDataSource;
end;
Despues solo heredo un frmCatalogo y un dmCatalogo para cada catalogo que voy hacer y les pongo el mismo nombre por ejemplo frmCatalogoArticulos y dmCatalogoArticulos con eso ya se crean solos
Ademas pongo en initialization de cada uno que heredé que se registre su clase por ejemplo RegisterClass(TfrmCatalogoArticulos) y RegisterClass(TdmCatalogoArticulos)
Espero que te pueda servir saludos