unit uEditorInfVentasAlbArticulo; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorInformeBaseInforme, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uBizInformes, uCustomView, uViewBase, uViewInformeBase, uViewInfVentasAlbArticulo, Grids, DBGrids, pngimage, JvExComCtrls, JvStatusBar, uInfVentasAlbArticuloController, uIEditorInfVentasAlbArticulo, uBizInfVentasArticulo, uInformesController, uViewGridBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, TB2ExtItems, TBXExtItems, uDAInterfaces, cxContainer, cxLabel; type TfEditorInfVentasAlbArticulo = class(TfEditorInformeBaseInforme, IEditorInfVentasAlbArticulo) TBXSeparatorItem16: TTBXSeparatorItem; tbxiExpandir: TTBXItem; tbxiContraer: TTBXItem; tbxiAnchoAuto: TTBXItem; actExpandir: TAction; actContraer: TAction; actAnchoAuto: TAction; TBXItem37: TTBXItem; TBXItem36: TTBXItem; TBXItem35: TTBXItem; TBXSeparatorItem17: TTBXSeparatorItem; frViewInfVentasAlbArticulo1: TfrViewInfVentasAlbArticulo; procedure actRefrescarExecute(Sender: TObject); procedure actExpandirExecute(Sender: TObject); procedure actContraerExecute(Sender: TObject); procedure actAnchoAutoExecute(Sender: TObject); procedure CustomEditorCreate(Sender: TObject); procedure CustomEditorGetModified(Sender: TObject; var Modified: Boolean); procedure FormShow(Sender: TObject); procedure actPrevisualizarExecute(Sender: TObject); procedure actImprimirExecute(Sender: TObject); procedure actConfPaginaExecute(Sender: TObject); private FInformesController: IInformesController; procedure RestaurarConfiguracion; procedure GuardarConfiguracion; protected FController : IInfVentasAlbArticuloController; FModificado : Boolean; procedure OnViewControlChanged(Sender: TObject); procedure SetInforme(const Value: IBizInforme); override; procedure RellenarCabeceraInforme; override; function GetController : IInfVentasAlbArticuloController; procedure SetController (const Value : IInfVentasAlbArticuloController); procedure GuardarInterno; override; public property Controller: IInfVentasAlbArticuloController read GetController write SetController; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uROClasses, //cxControls, cxGridCustomView, //cxGridCustomTableView, //cxGridTableView, uCustomEditor, uDataModuleUsuarios, uSistemaFunc; {$R *.dfm} { TfEditorInfVentasAlbArticulo } procedure TfEditorInfVentasAlbArticulo.SetController(const Value: IInfVentasAlbArticuloController); begin FController := Value; if Assigned(FController) then frViewInfVentasAlbArticulo1.Controller := (FController as IInfVentasAlbArticuloController); end; procedure TfEditorInfVentasAlbArticulo.SetInforme(const Value: IBizInforme); begin inherited; // RefrescarTituloEditor; if Assigned(FInforme) then begin frViewInfVentasAlbArticulo1.OnViewChanged := OnViewControlChanged; // with (FInforme as IBizInforme) do // begin // Items.DataTable.Active := False; // No se abre la tabla hasta que no se pulse en 'Refrescar' // dsVentasTerminadas.DataTable := Items.DataTable; // frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.FocusedView.DataController.DataSource := dsVentasTerminadas; // end; end; end; procedure TfEditorInfVentasAlbArticulo.actRefrescarExecute(Sender: TObject); begin inherited; frViewInfVentasAlbArticulo1.Refresh; while (frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.FocusedView.Controller.FocusedRecord is TcxGridGroupRow) do begin frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.FocusedView.Controller.FocusedRecord.Expand(True); if (frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.FocusedView.Controller.FocusedRecordIndex < frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.FocusedView.DataController.RowCount - 1) then frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.FocusedView.Controller.GoToNext(False, True) else Exit; end; end; procedure TfEditorInfVentasAlbArticulo.actExpandirExecute(Sender: TObject); begin inherited; frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.ExpandirTodo; end; procedure TfEditorInfVentasAlbArticulo.actContraerExecute(Sender: TObject); begin inherited; frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.ContraerTodo; end; procedure TfEditorInfVentasAlbArticulo.actAnchoAutoExecute(Sender: TObject); begin inherited; frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.AjustarAncho; end; procedure TfEditorInfVentasAlbArticulo.OnViewControlChanged( Sender: TObject); begin // if FInforme.EsModificable then FModificado := True; end; procedure TfEditorInfVentasAlbArticulo.CustomEditorCreate(Sender: TObject); begin inherited; FModificado := False; end; procedure TfEditorInfVentasAlbArticulo.CustomEditorGetModified( Sender: TObject; var Modified: Boolean); begin inherited; Modified := FModificado; end; destructor TfEditorInfVentasAlbArticulo.Destroy; begin FInformesController := Nil; FViewInforme := Nil; inherited; end; function TfEditorInfVentasAlbArticulo.GetController: IInfVentasAlbArticuloController; begin Result := FController; end; procedure TfEditorInfVentasAlbArticulo.GuardarConfiguracion; var Aux : IROStrings; Fichero: TextFile; NombreFichero: String; begin NombreFichero := DarFicheroTemporal; frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.cxGridView.StoreToIniFile(NombreFichero, true, [gsoUseFilter,gsoUseSummary]); with TStringList.Create do try LoadFromFile(NombreFichero); Aux := NewROStrings(); Aux.Add(Text); { if not (FInforme.DataTable.State in dsEditModes) then FInforme.Edit; FInforme.VISTA := Aux; } finally Free; end; end; procedure TfEditorInfVentasAlbArticulo.GuardarInterno; begin inherited; ShowHourglassCursor; try if FModificado then GuardarConfiguracion; FInformesController.Guardar(FInforme); FModificado := False; finally HideHourglassCursor; end; Modified := False; end; procedure TfEditorInfVentasAlbArticulo.RestaurarConfiguracion; var Fichero: TextFile; NombreFichero: String; begin try //Creamos un fichero temporal para guardar la configuración del informe que viene dada //por su campo vista, para luego restaurarla en el grid a partir de dicho fichero porque el Stream falla NombreFichero := DarFicheroTemporal; AssignFile(Fichero, NombreFichero); Rewrite(Fichero); Writeln(Fichero, FInforme.VISTA.Text); CloseFile(Fichero); //Restauramos la configuración frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.cxGridView.RestoreFromIniFile(NombreFichero,True,false,[gsoUseFilter,gsoUseSummary]); finally //Eliminamos el fichero temporal DeleteFile(NombreFichero); // FreeAndNil(Fichero) end; end; procedure TfEditorInfVentasAlbArticulo.FormShow(Sender: TObject); begin inherited; if FInforme.DataTable.State <> dsInsert then // No restaurar si estamos insertando RestaurarConfiguracion; frViewInfVentasAlbArticulo1.frViewColumnas1.Refresh; frViewInfVentasAlbArticulo1.frViewAgrupaciones1.Refresh; if FInforme.DataTable.State = dsInsert then // Si es nuevo obligamos a meter nombre actPropiedades.Execute; end; procedure TfEditorInfVentasAlbArticulo.actPrevisualizarExecute( Sender: TObject); begin inherited; frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.Preview; end; procedure TfEditorInfVentasAlbArticulo.actImprimirExecute(Sender: TObject); begin inherited; frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.Print; end; procedure TfEditorInfVentasAlbArticulo.actConfPaginaExecute( Sender: TObject); begin inherited; frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.PrintSetup; end; constructor TfEditorInfVentasAlbArticulo.Create(AOwner: TComponent); begin inherited; FInformesController := TInformesController.Create; FViewInforme := frViewInfVentasAlbArticulo1; end; procedure TfEditorInfVentasAlbArticulo.RellenarCabeceraInforme; begin inherited; with frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.dxPrintStyleManager1Style1.PrinterPage.PageHeader do begin LeftTitle.Clear; // LeftTitle.Add(FInforme.NOMBRE); LeftTitle.Add(FInforme.DESCRIPCION); RightTitle.Clear; RightTitle.Add(DateToStr(frViewInfVentasAlbArticulo1.frViewPeriodoFechasInforme1.edtFechaIni.Date) + ' - ' + DateToStr(frViewInfVentasAlbArticulo1.frViewPeriodoFechasInforme1.edtFechaFin.Date)); RightTitle.Add(frViewInfVentasAlbArticulo1.frViewInfVentasAlbArticuloGrid1.FocusedView.DataController.Filter.FilterText); end; end; end.