unit uEditorComisiones; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent, JvNavigationPane, uViewComisiones, uBizComisiones, ActnList, DBActns, uViewGrid, Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, pngimage, uIEditorComisiones, uEditorGridBase, JvComponentBase, uViewGridBase, uComisionesController, JvExComCtrls, JvStatusBar, uDAInterfaces, JSDialog; type TfEditorComisiones = class(TfEditorGridBase, IEditorComisiones) N4: TMenuItem; Volcaradisco1: TMenuItem; TBXSubmenuItem2: TTBXSubmenuItem; TBXItem38: TTBXItem; JsPrevisualizarDialog: TJSDialog; JsImprimirDialog: TJSDialog; procedure FormShow(Sender: TObject); private FComisiones: IBizComisiones; FController : IComisionesController; protected function GetComisiones: IBizComisiones; procedure SetComisiones(const Value: IBizComisiones); function GetController : IComisionesController; virtual; procedure SetController (const Value : IComisionesController); virtual; procedure NuevoInterno; override; procedure EliminarInterno; override; procedure ModificarInterno; override; procedure PrevisualizarInterno; override; procedure ImprimirInterno; 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 Comisiones: IBizComisiones read GetComisiones write SetComisiones; property Controller : IComisionesController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uCustomEditor, uDataModuleComisiones, uDataModuleUsuarios, uGridUtils, //uEditorRemesaCliente, uEditorDBBase, cxGrid, cxGridCustomTableView, uDBSelectionListUtils; {$R *.dfm} { ****************************** TfEditorComisiones ******************************* } procedure TfEditorComisiones.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Comisiones) then raise Exception.Create('No hay ningún RemesaCliente asignado'); Comisiones.DataTable.Active := True; ViewGrid.GotoFirst; //Para que coja el ancho automático actAnchoAuto.Execute; end; function TfEditorComisiones.GetComisiones: IBizComisiones; begin Result := FComisiones; end; procedure TfEditorComisiones.ImprimirInterno; var Respuesta : Integer; AComisiones: IBizComisiones; AllItems: Boolean; begin AComisiones := Nil; AllItems := False; if MultiSelect and Assigned(ViewGrid) then AllItems := (ViewGrid.NumSeleccionados > 1); //Si esta agrupado solo podré imprimir la lista de elementos visibles if not ViewGrid.esSeleccionCeldaDatos then inherited else begin Respuesta := JsImprimirDialog.Execute; if Respuesta <> IDCANCEL then begin case JsImprimirDialog.CustomButtonResult of 200 : begin // Lista de elementos visibles inherited; end; 100 : begin // Elemento Seleccionado if AllItems then begin SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Comisiones as ISeleccionable).SelectedRecords); AComisiones := (Controller as IComisionesController).ExtraerSeleccionados(Comisiones) as IBizComisiones; end else AComisiones := Comisiones; if Assigned(AComisiones) then FController.Print(AComisiones, AllItems); end; end; end; end; end; function TfEditorComisiones.GetController: IComisionesController; begin Result := FController; end; procedure TfEditorComisiones.ModificarInterno; begin inherited; FController.Ver(Comisiones); end; procedure TfEditorComisiones.NuevoInterno; begin inherited; FController.Anadir(Comisiones); FController.Ver(Comisiones); end; procedure TfEditorComisiones.PonerTitulos(const ATitulo: string); var FTitulo : String; begin // FTitulo := 'Lista de liquidaciones de comisiones - ' + AppFactuGES.EmpresaActiva.NOMBRE; inherited PonerTitulos(FTitulo); end; procedure TfEditorComisiones.PrevisualizarInterno; var Respuesta : Integer; AComisiones: IBizComisiones; AllItems: Boolean; begin AComisiones := Nil; AllItems := False; if MultiSelect and Assigned(ViewGrid) then AllItems := (ViewGrid.NumSeleccionados > 1); //Si esta agrupado solo podré imprimir la lista de elementos visibles if not ViewGrid.esSeleccionCeldaDatos then inherited else begin Respuesta := JsPrevisualizarDialog.Execute; if Respuesta <> IDCANCEL then begin case JsPrevisualizarDialog.CustomButtonResult of 200 : begin // Lista de elementos visibles inherited; end; 100 : begin // Elemento Seleccionado if AllItems then begin SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Comisiones as ISeleccionable).SelectedRecords); AComisiones := (Controller as IComisionesController).ExtraerSeleccionados(Comisiones) as IBizComisiones; end else AComisiones := Comisiones; if Assigned(AComisiones) then FController.Preview(AComisiones, AllItems); end; end; end; end; end; procedure TfEditorComisiones.SetComisiones(const Value: IBizComisiones); begin FComisiones := Value; dsDataTable.DataTable := FComisiones.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewComisiones).Comisiones := Comisiones; end; procedure TfEditorComisiones.SetController(const Value: IComisionesController); begin FController := Value; end; destructor TfEditorComisiones.Destroy; begin FComisiones := NIL; FController := NIl; inherited; end; procedure TfEditorComisiones.EliminarInterno; begin if (Application.MessageBox('¿Desea borrar esta liquidación de comisiones?', 'Atención', MB_YESNO) = 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 if not FController.Eliminar(Comisiones) then actRefrescar.Execute; end; end; procedure TfEditorComisiones.AsignarVista; begin ViewGrid := CreateView(TfrViewComisiones) as IViewComisiones; end; constructor TfEditorComisiones.Create(AOwner: TComponent); begin inherited; AsignarVista; end; end.