unit uConfiguracion; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ActnList, JvComponent, JvAppStorage, JvAppRegistryStorage, Contnrs, ExtCtrls, ImgList, PngImageList, JvExControls, JvGradientHeaderPanel, uFrameConfiguracion, JvComponentBase, JvPageList, JvExComCtrls, JvPageListTreeView, uConexionBD, uConfGeneral; type TfConfiguracion = class(TForm) Button1: TButton; Button2: TButton; ActionList1: TActionList; actAceptar: TAction; actCancelar: TAction; JvAppRegistryStorage1: TJvAppRegistryStorage; PngImageList1: TPngImageList; frConfGeneral1: TfrConfGeneral; PageControl1: TPageControl; pagGeneral: TTabSheet; pagBD: TTabSheet; frConexionBD1: TfrConexionBD; procedure actAceptarExecute(Sender: TObject); procedure actCancelarExecute(Sender: TObject); procedure FormShow(Sender: TObject); procedure PageControl1Change(Sender: TObject); private FPaginaActual : IConfiguracionFrame; public constructor Create(AOwner: TComponent); override; end; var fConfiguracion: TfConfiguracion; implementation uses uDataModuleServer; {$R *.dfm} {type TFrameClass = class of TFrameConfiguracion; function CreateFrame(Parent: TWinControl; FrameClass: TFrameClass): IConfiguracionFrame; var aFrame : TFrameConfiguracion; begin aFrame := FrameClass.Create(NIL); aFrame.Name:='Frame'+IntToStr(Random(10000)); aFrame.Parent := Parent; aFrame.Init; aFrame.Show; Result := aFrame; end;} procedure TfConfiguracion.actAceptarExecute(Sender: TObject); begin if Assigned(FPaginaActual) then FPaginaActual.Finalize; dmServer.SalvarConfiguracion; Close; end; procedure TfConfiguracion.actCancelarExecute(Sender: TObject); begin Close; end; constructor TfConfiguracion.Create(AOwner: TComponent); begin inherited; FPaginaActual := NIL; end; procedure TfConfiguracion.FormShow(Sender: TObject); begin PageControl1.ActivePageIndex := 0; //Se ha de llamar al evento ya que la asignación anterior no lo lanza PageControl1Change(PageControl1); end; procedure TfConfiguracion.PageControl1Change(Sender: TObject); begin if Assigned(FPaginaActual) then FPaginaActual.Finalize; case PageControl1.ActivePageIndex of 0 : FPaginaActual := frConfGeneral1; 1 : FPaginaActual := frConexionBD1; end; if Assigned(FPaginaActual) then FPaginaActual.Init; Self.Update; end; end.