unit uEditorPerfilesUsuario; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorGridBase, Menus, JvAppStorage, JvAppRegistryStorage, DB, uDAInterfaces, uDADataTable, JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, JvExComCtrls, JvStatusBar, TBX, TB2ExtItems, TBXExtItems, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvNavigationPane, uIEditorPerfilesUsuario, uUsuariosController, uBizUsuarios, uViewPerfilesUsuario; type TfEditorPerfilesUsuario = class(TfEditorGridBase, IEditorPerfilesUsuario) procedure actNuevoExecute(Sender: TObject); procedure actModificarExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure dsDataTableDataChange(Sender: TObject; Field: TField); procedure FormShow(Sender: TObject); private FPerfiles : IBizPerfilUsuario; FController : IUsuariosController; protected function GetController : IUsuariosController; procedure SetController (const Value : IUsuariosController); function GetPerfilesUsuario: IBizPerfilUsuario; procedure SetPerfilesUsuario(const Value: IBizPerfilUsuario); procedure NuevoInterno; procedure EliminarInterno; procedure ModificarInterno; procedure ActualizarEstadoEditor; //Si queremos crear otra vista para el editor heredado solo tendriamos que //sobreescribir este metodo procedure AsignarVista; virtual; public procedure PonerTitulos(const ATitulo: string = ''); property PerfilesUsuario: IBizPerfilUsuario read GetPerfilesUsuario write SetPerfilesUsuario; property Controller : IUsuariosController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses uDialogUtils; { TfEditorUsuarios } procedure TfEditorPerfilesUsuario.actEliminarExecute(Sender: TObject); begin if actEliminar.Enabled then begin EliminarInterno; ActualizarEstadoEditor; end; end; procedure TfEditorPerfilesUsuario.actModificarExecute(Sender: TObject); begin if actModificar.Enabled then begin ModificarInterno; ActualizarEstadoEditor; end; end; procedure TfEditorPerfilesUsuario.actNuevoExecute(Sender: TObject); begin if actNuevo.Enabled then begin NuevoInterno; ActualizarEstadoEditor; end; end; procedure TfEditorPerfilesUsuario.ActualizarEstadoEditor; begin PonerTitulos; end; procedure TfEditorPerfilesUsuario.AsignarVista; begin ViewGrid := CreateView(TfrViewPerfilesUsuario) as IViewPerfilesUsuario; end; constructor TfEditorPerfilesUsuario.Create(AOwner: TComponent); begin inherited; AsignarVista; end; destructor TfEditorPerfilesUsuario.Destroy; begin FPerfiles := NIL; FController := NIl; inherited; end; procedure TfEditorPerfilesUsuario.dsDataTableDataChange(Sender: TObject; Field: TField); begin inherited; ActualizarEstadoEditor end; procedure TfEditorPerfilesUsuario.EliminarInterno; begin if (ShowConfirmMessage('Eliminar un perfil', Format('¿Desea eliminar el perfil %s?', [FPerfiles.USERNAME])) = IDYES) then begin inherited; //Para que en el caso de no poderse realizar la operación se refresquen //los datos y no nos permita eliminar un registro a la segunda FController.EliminarPerfil(FPerfiles); actRefrescar.Execute; end; end; procedure TfEditorPerfilesUsuario.FormShow(Sender: TObject); begin inherited; ActualizarEstadoEditor; if Assigned(Parent) then begin StatusBar.Visible := False; actCerrar.ShortCut := 0 end else begin StatusBar.Visible := True; actCerrar.ShortCut := ShortCut(VK_ESCAPE, []); end; end; function TfEditorPerfilesUsuario.GetController: IUsuariosController; begin Result := FController; end; function TfEditorPerfilesUsuario.GetPerfilesUsuario: IBizPerfilUsuario; begin Result := FPerfiles; end; procedure TfEditorPerfilesUsuario.ModificarInterno; begin inherited; FController.VerPerfil(FPerfiles.ID); actRefrescar.Execute; end; procedure TfEditorPerfilesUsuario.NuevoInterno; var ANuevoPerfil : IBizPerfilUsuario; begin inherited; ANuevoPerfil := FController.NuevoPerfil; FController.VerPerfil(ANuevoPerfil); actRefrescar.Execute; end; procedure TfEditorPerfilesUsuario.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Lista de perfiles de usuario'; if ReadOnly then begin JvNavPanelHeader.Caption := FTitulo + ' (NO MODIFICABLE)'; Caption := FTitulo + ' (NO MODIFICABLE)'; end else begin JvNavPanelHeader.Caption := FTitulo; Caption := FTitulo; end; end; procedure TfEditorPerfilesUsuario.SetController(const Value: IUsuariosController); begin FController := Value; end; procedure TfEditorPerfilesUsuario.SetPerfilesUsuario( const Value: IBizPerfilUsuario); begin FPerfiles := Value; dsDataTable.DataTable := FPerfiles.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewPerfilesUsuario).PerfilesUsuario := FPerfiles; end; end.