Cita:
Empezado por Ñuño Martínez
Te diría sobrecargar el constructor de TDataModule, pero no sé si funcionaría. Eso sí, si lo haces no olvides llamar al constructor padre ("INHERITED Create (ect...);").
|
Gracias Ñuño.
He intentado hacer lo que has dicho:
Código Delphi
[-]
constructor Create(AOwner : TComponent); overload; override;
...
constructor TdmBase.Create(AOwner: TComponent);
begin
CierraTablas;
inherited create(AOwner);
end;
...
Procedure TdmBase.CierraTablas;
var I: Integer;
begin
for I:=0 to ComponentCount-1 do begin
if (Uppercase(Components[i].ClassType.ClassName)='TMYCONNECTION') then begin
TMyConnection(Components[i]).Connected:=False;
TMyConnection(Components[i]).Server:='';
end;
end;
for I:=0 to ComponentCount-1 do begin
if (Uppercase(Components[i].ClassType.ClassName)='TMYTABLE') or
(UpperCase(Components[i].ClassType.ClassName)='TMYQUERY') then begin
TMyTable(Components[i]).Close;
end;
end;
end;
El problema es que al hacer CierraTablas antes del inherited ComponentCount tiene valor 0 (no se han creado aún los
componentes)
También lo he intentado haciendo el overload completo de la funcion de la unit classes:
Código Delphi
[-]
constructor TdmBase.Create(AOwner: TComponent);
begin
GlobalNameSpace.BeginWrite;
try
CreateNew(AOwner);
if (ClassType <> TDataModule) and not (csDesigning in ComponentState) then
begin
if not InitInheritedComponent(Self, TDataModule) then
raise EResNotFound.CreateFmt(SResNotFound, [ClassName]);
if OldCreateOrder then DoCreate;
end;
finally
GlobalNameSpace.EndWrite;
end;
end;
y tampoco he conseguido cerrar la conexion.
En fin, seguiré intentando cosas y os comentaré algo.
Gracias.