unit uFactuGES_App; interface uses SysUtils, Classes, Forms, uUsuarios, uBizEmpresas, uEmpresasController, JclFileUtils, uUsuariosController; type TAppFactuGES = class(TObject) private FAppInfo : TJclFileVersionInfo; FEmpresasController : IEmpresasController; FUsuariosController: IUsuariosController; FEmpresaActiva: IBizEmpresa; FUsuarioActivo: TUsuario; function GetAppForm: TCustomForm; procedure SetEmpresaActiva(const Value: IBizEmpresa); procedure SetUsuarioActivo(const Value: TUsuario); function GetEmpresasController: IEmpresasController; function GetUsuariosController: IUsuariosController; function GetAppName: String; function GetAppVersion: String; protected procedure InitializeInstance; virtual; procedure DestroyInstance; virtual; public class function NewInstance: TObject; override; procedure FreeInstance; override; class function RefCount: Integer; property AppVersion : String read GetAppVersion; property AppName : String read GetAppName; property AppForm : TCustomForm read GetAppForm; property EmpresaActiva : IBizEmpresa read FEmpresaActiva write SetEmpresaActiva; property UsuarioActivo : TUsuario read FUsuarioActivo write SetUsuarioActivo; property EmpresasController : IEmpresasController read GetEmpresasController; property UsuariosController : IUsuariosController read GetUsuariosController; end; var AppFactuGES : TAppFactuGES = nil; implementation uses uDataModuleBase, uUsuariosViewRegister; var Ref_Count : Integer = 0; procedure TAppFactuGES.DestroyInstance; begin end; procedure TAppFactuGES.FreeInstance; begin Dec(Ref_Count); if (Ref_Count = 0) then begin AppFactuGES := NIL; // Destroy private variables here inherited FreeInstance; end; end; function TAppFactuGES.GetAppForm: TCustomForm; begin Result := Application.MainForm; end; function TAppFactuGES.GetAppName: String; begin Result := FAppInfo.ProductName; end; function TAppFactuGES.GetAppVersion: String; begin Result := FAppInfo.ProductVersion; end; function TAppFactuGES.GetEmpresasController: IEmpresasController; begin Result := FEmpresasController; end; function TAppFactuGES.GetUsuariosController: IUsuariosController; begin Result := FUsuariosController; end; procedure TAppFactuGES.InitializeInstance; begin FEmpresaActiva := NIL; FUsuarioActivo := NIL; FAppInfo := TJclFileVersionInfo.Create(Application.ExeName); FUsuariosController := TUsuariosController.Create; FEmpresasController := TEmpresasController.Create; end; class function TAppFactuGES.NewInstance: TObject; begin if (not Assigned(AppFactuGES)) then begin AppFactuGES := TAppFactuGES(inherited NewInstance); // Initialize private variables here AppFactuGES.InitializeInstance; end; Result := AppFactuGES; Inc(Ref_Count); end; class function TAppFactuGES.RefCount: Integer; begin Result := Ref_Count; end; procedure TAppFactuGES.SetEmpresaActiva(const Value: IBizEmpresa); begin FEmpresaActiva := Value; end; procedure TAppFactuGES.SetUsuarioActivo(const Value: TUsuario); begin if Assigned(FUsuarioActivo) and (FUsuarioActivo <> Value) then FreeAndNIL(FUsuarioActivo); FUsuarioActivo := Value; end; initialization AppFactuGES := TAppFactuGES.Create; // Pongo esto aquí por ahora uUsuariosViewRegister.RegisterViews; finalization FreeAndNIL(AppFactuGES); // Pongo esto aquí por ahora uUsuariosViewRegister.UnregisterViews; end.