unit uEditorUsuarios; 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, uCustomView, uViewBase, uViewGridBase, uViewGrid, uViewUsuarios, uIEditorUsuarios, uUsuariosController, uBizUsuarios; type TfEditorUsuarios = class(TfEditorGridBase, IEditorUsuarios) actCambiarPassword: TAction; TBXSubmenuItem2: TTBXSubmenuItem; TBXItem38: TTBXItem; TBXItem39: TTBXItem; procedure actEliminarUpdate(Sender: TObject); procedure actCambiarPasswordUpdate(Sender: TObject); procedure actCambiarPasswordExecute(Sender: TObject); private FUsuarios : IBizUsuario; FController : IUsuariosController; protected function GetController : IUsuariosController; procedure SetController (const Value : IUsuariosController); function GetUsuarios: IBizUsuario; procedure SetUsuarios(const Value: IBizUsuario); procedure NuevoInterno; override; procedure EliminarInterno; override; procedure ModificarInterno; override; procedure ImprimirInterno; override; procedure PrevisualizarInterno; override; procedure DuplicarInterno; override; //Si queremos crear otra vista para el editor heredado solo tendriamos que //sobreescribir este metodo procedure AsignarVista; virtual; public procedure PonerTitulos(const ATitulo: string = ''); override; property Usuarios: IBizUsuario read GetUsuarios write SetUsuarios; property Controller : IUsuariosController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses uDialogUtils; { TfEditorUsuarios } procedure TfEditorUsuarios.actCambiarPasswordExecute(Sender: TObject); begin inherited; FController.CambiarPassword(FUsuarios.ID); end; procedure TfEditorUsuarios.actCambiarPasswordUpdate(Sender: TObject); begin inherited; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := HayDatos; end; procedure TfEditorUsuarios.actEliminarUpdate(Sender: TObject); begin inherited; if (Sender as TAction).Enabled then (Sender as TAction).Enabled := (FUsuarios.PRIVILEGED = 0); end; procedure TfEditorUsuarios.AsignarVista; begin ViewGrid := CreateView(TfrViewUsuarios) as IViewUsuarios; end; constructor TfEditorUsuarios.Create(AOwner: TComponent); begin inherited; AsignarVista; end; destructor TfEditorUsuarios.Destroy; begin FUsuarios := NIL; FController := NIl; inherited; end; procedure TfEditorUsuarios.DuplicarInterno; begin inherited; end; procedure TfEditorUsuarios.EliminarInterno; begin if (ShowConfirmMessage('Eliminar un usuario', Format('¿Desea borrar el usuario %s?', [FUsuarios.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.EliminarUsuario(FUsuarios.ID); actRefrescar.Execute; end; end; function TfEditorUsuarios.GetController: IUsuariosController; begin Result := FController; end; function TfEditorUsuarios.GetUsuarios: IBizUsuario; begin Result := FUsuarios; end; procedure TfEditorUsuarios.ImprimirInterno; begin inherited; end; procedure TfEditorUsuarios.ModificarInterno; begin inherited; FController.VerUsuario(FUsuarios.ID); actRefrescar.Execute; end; procedure TfEditorUsuarios.NuevoInterno; var ANuevoUsuario : IBizUsuario; begin inherited; ANuevoUsuario := FController.NuevoUsuario; FController.VerUsuario(ANuevoUsuario); actRefrescar.Execute; end; procedure TfEditorUsuarios.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := 'Lista de usuarios'; inherited PonerTitulos(FTitulo); end; procedure TfEditorUsuarios.PrevisualizarInterno; begin inherited; end; procedure TfEditorUsuarios.SetController(const Value: IUsuariosController); begin FController := Value; end; procedure TfEditorUsuarios.SetUsuarios(const Value: IBizUsuario); begin FUsuarios := Value; dsDataTable.DataTable := FUsuarios.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewUsuarios).Usuarios := FUsuarios; end; end.