unit uEditorFacturasCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorGrid, Menus, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uViewGrid, pngimage, uBizFacturasCliente, JvComponentBase, StdCtrls, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, TBXDkPanels, dxLayoutControl, JvButton, cxRadioGroup, Buttons; type IEditorFacturasCliente = interface(IEditorGrid) ['{597BF875-BD19-4B68-898F-B09982B3360A}'] function GetFacturasCliente: IBizFacturasCliente; procedure SetFacturasCliente(const Value: IBizFacturasCliente); property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; end; TfEditorFacturasCliente = class(TfEditorGrid, IEditorFacturasCliente) procedure actEliminarExecute(Sender: TObject); procedure actModificarExecute(Sender: TObject); procedure actNuevoExecute(Sender: TObject); procedure OnListaAnosChange(Sender: TObject; const Text: string); procedure FormShow(Sender: TObject); private FFacturasCliente: IBizFacturasCliente; protected function GetFacturasCliente: IBizFacturasCliente; procedure SetFacturasCliente(const Value: IBizFacturasCliente); procedure SetViewGrid(const Value: IViewGrid); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property FacturasCliente: IBizFacturasCliente read GetFacturasCliente write SetFacturasCliente; end; var fEditorFacturasCliente: TfEditorFacturasCliente; implementation uses uDataModuleFacturasCliente, uViewFacturasCliente, uEditorUtils, uDBSelectionList; {$R *.dfm} function ShowEditorFacturasCliente (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorFacturasCliente; begin AEditor := TfEditorFacturasCliente.Create(Application); try AEditor.FacturasCliente := (ABizObject as IBizFacturasCliente); Result := AEditor.ShowModal; finally AEditor.Release; end; end; function ShowSelectEditorFacturasCliente (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorFacturasCliente; begin AEditor := TfEditorFacturasCliente.Create(Application); try AEditor.FacturasCliente := (ABizObject as IBizFacturasCliente); // AEditor.SelectionBarVisible := True; Result := AEditor.ShowModal; finally AEditor.Release; end; end; { *************************** TfEditorFacturasCliente *************************** } constructor TfEditorFacturasCliente.Create(AOwner: TComponent); begin inherited; ViewGrid := CreateView(TfrViewFacturasCliente) as IViewFacturasCliente; end; destructor TfEditorFacturasCliente.Destroy; begin FFacturasCliente := NIL; inherited; end; procedure TfEditorFacturasCliente.actEliminarExecute(Sender: TObject); begin if (Application.MessageBox('¿Desea borrar esta factura de cliente?', 'Atención', MB_YESNO) = IDYES) then begin inherited; ViewGrid.RefreshGrid; end; end; procedure TfEditorFacturasCliente.actModificarExecute(Sender: TObject); begin inherited; FacturasCliente.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorFacturasCliente.actNuevoExecute(Sender: TObject); begin inherited; FacturasCliente.Insert; FacturasCliente.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; function TfEditorFacturasCliente.GetFacturasCliente: IBizFacturasCliente; begin Result := FFacturasCliente; end; procedure TfEditorFacturasCliente.SetFacturasCliente(const Value: IBizFacturasCliente); begin FFacturasCliente := Value; if Assigned(FFacturasCliente) then begin //Se guarda el where de la sentencia origen, por si el editor tiene filtros que //afecten a este where y en un futuro se desea volver al where origen (filtro de año)) WhereDataTable := FFacturasCliente.DataTable.Where.Clause; dsDataTable.DataTable := FFacturasCliente.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewFacturasCliente).FacturasCliente := FacturasCliente; end; end; procedure TfEditorFacturasCliente.SetViewGrid(const Value: IViewGrid); begin inherited; if Assigned(ViewGrid) and Assigned(FacturasCliente) then (ViewGrid as IViewFacturasCliente).FacturasCliente := FFacturasCliente; end; procedure TfEditorFacturasCliente.FormShow(Sender: TObject); begin ListaAnos := dmFacturasCliente.DarListaAnosFacturas; cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED inherited; end; procedure TfEditorFacturasCliente.OnListaAnosChange(Sender: TObject; const Text: string); var aAux : ISelectedRowList; begin dmFacturasCliente.FiltrarAno(FacturasCliente, WhereDataTable, Text); if FacturasCliente.DataTable.Active then actRefrescar.Execute; // Quitar las selecciones que hubiera anteriormente porque ya no valen if Supports(FacturasCliente, ISelectedRowList, aAux) then if (aAux.SelectedRows.Count > 0) then aAux.SelectedRows.Clear; end; initialization RegisterEditor(IBizFacturasCliente, ShowEditorFacturasCliente, etItems); RegisterEditor(IBizFacturasCliente, ShowSelectEditorFacturasCliente, etSelectItems); finalization end.