{ =============================================================================== Copyright (©) 2006. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 22-05-2006 Versión actual: 1.0.0 Fecha versión actual: 22-05-2006 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit uViewPresupuestosContacto; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, uViewBase, uBizObra, ComCtrls, ToolWin, ImgList, PngImageList; type IViewPresupuestosContacto = interface(IViewGrid) ['{F5032AD4-1880-4E04-BDA9-0F1FB43B6432}'] function GetPresupuestosContacto: IBizPresupuestosObra; procedure SetPresupuestosContacto(const Value: IBizPresupuestosObra); property PresupuestosContacto: IBizPresupuestosObra read GetPresupuestosContacto write SetPresupuestosContacto; procedure SetClasePresupuesto(const Value: String); function GetClasePresupuesto: String; property ClasePresupuesto: String read GetClasePresupuesto write SetClasePresupuesto; procedure ActivarFiltros; procedure DesactivarFiltros; end; TfrViewPresupuestosContacto = class(TfrViewGrid, IViewPresupuestosContacto) cxGridLevel1: TcxGridLevel; cxGridView2: TcxGridDBTableView; cxGridViewRecID: TcxGridDBColumn; cxGridViewCODIGO: TcxGridDBColumn; cxGridViewCODIGOOBRA: TcxGridDBColumn; cxGridViewCODIGOCONTACTO: TcxGridDBColumn; cxGridViewFECHAALTA: TcxGridDBColumn; cxGridViewUSUARIO: TcxGridDBColumn; cxGridViewFECHA: TcxGridDBColumn; cxGridViewTIPO: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewPRESUPUESTOINICIAL: TcxGridDBColumn; cxGridViewPRESUPUESTOFINAL: TcxGridDBColumn; cxGridViewRETENCION: TcxGridDBColumn; cxGridViewTIEMPORETENCION: TcxGridDBColumn; cxGridView2RecID: TcxGridDBColumn; cxGridView2CODIGO: TcxGridDBColumn; cxGridView2CODIGOOBRA: TcxGridDBColumn; cxGridView2CODIGOCONTACTO: TcxGridDBColumn; cxGridView2FECHAALTA: TcxGridDBColumn; cxGridView2USUARIO: TcxGridDBColumn; cxGridView2FECHA: TcxGridDBColumn; cxGridView2TIPO: TcxGridDBColumn; cxGridView2DESCRIPCION: TcxGridDBColumn; cxGridView2PRESUPUESTOINICIAL: TcxGridDBColumn; cxGridView2PRESUPUESTOFINAL: TcxGridDBColumn; cxGridView2RETENCION: TcxGridDBColumn; cxGridView2TIEMPORETENCION: TcxGridDBColumn; cxGridViewCLASE: TcxGridDBColumn; cxGridView2CLASE: TcxGridDBColumn; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton4: TToolButton; ToolButton3: TToolButton; ToolButton5: TToolButton; actEditar: TAction; actEliminar: TAction; actEliminarTodo: TAction; actAnadir: TAction; PngImageList: TPngImageList; cxGridViewIMPORTERETENCION: TcxGridDBColumn; cxGridViewACEPTADO: TcxGridDBColumn; cxStyleAceptado: TcxStyle; cxStyleRechazado: TcxStyle; procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); procedure CustomViewShow(Sender: TObject); procedure actEditarUpdate(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); procedure actEliminarTodoUpdate(Sender: TObject); procedure cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure cxGridView2StylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); procedure cxGridViewACEPTADOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); private FClasePresupuesto: String; FPresupuestosContacto: IBizPresupuestosObra; function GetPresupuestosContacto: IBizPresupuestosObra; procedure SetPresupuestosContacto(const Value: IBizPresupuestosObra); procedure SetClasePresupuesto(const Value: String); function GetClasePresupuesto: String; public property ClasePresupuesto: String read GetClasePresupuesto write SetClasePresupuesto; property PresupuestosContacto: IBizPresupuestosObra read GetPresupuestosContacto write SetPresupuestosContacto; procedure RefreshGrid; override; procedure ActivarFiltros; procedure DesactivarFiltros; end; var frViewPresupuestosContacto: TfrViewPresupuestosContacto; implementation uses uDataModuleObras, schObrasClient_Intf; {$R *.dfm} { TfrViewPresupuestosContacto } function TfrViewPresupuestosContacto.GetPresupuestosContacto: IBizPresupuestosObra; begin Result := FPresupuestosContacto; end; procedure TfrViewPresupuestosContacto.SetPresupuestosContacto(const Value: IBizPresupuestosObra); begin FPresupuestosContacto := Value; if Assigned(FPresupuestosContacto) then DADataSource.DataTable := FPresupuestosContacto.DataTable else DADataSource.DataTable := NIL; end; procedure TfrViewPresupuestosContacto.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); begin inherited; case ALevel.Index of 0: ClasePresupuesto := CLASE_PRESUPUESTO; 1: ClasePresupuesto := CLASE_TRABAJO; end; end; procedure TfrViewPresupuestosContacto.actEditarUpdate(Sender: TObject); begin if (ClasePresupuesto = CLASE_PRESUPUESTO) then (Sender as TAction).Enabled := (cxGridView.DataController.FilteredRecordCount > 0) else (Sender as TAction).Enabled := (cxGridView2.DataController.FilteredRecordCount > 0); end; procedure TfrViewPresupuestosContacto.actEliminarUpdate(Sender: TObject); begin if (ClasePresupuesto = CLASE_PRESUPUESTO) then (Sender as TAction).Enabled := (cxGridView.DataController.FilteredRecordCount > 0) else (Sender as TAction).Enabled := (cxGridView2.DataController.FilteredRecordCount > 0); end; procedure TfrViewPresupuestosContacto.actEliminarTodoUpdate( Sender: TObject); begin if (ClasePresupuesto = CLASE_PRESUPUESTO) then (Sender as TAction).Enabled := (cxGridView.DataController.FilteredRecordCount > 0) else (Sender as TAction).Enabled := (cxGridView2.DataController.FilteredRecordCount > 0); end; procedure TfrViewPresupuestosContacto.CustomViewShow(Sender: TObject); begin cxGridView.DataController.Filter.BeginUpdate; cxGridView.DataController.Filter.Clear; cxGridView.DataController.Filter.Root.AddItem(cxGridViewCLASE, foEqual, CLASE_PRESUPUESTO, CLASE_PRESUPUESTO); cxGridView.DataController.Filter.EndUpdate; cxGridView2.DataController.Filter.BeginUpdate; cxGridView2.DataController.Filter.Clear; cxGridView2.DataController.Filter.Root.AddItem(cxGridView2CLASE, foEqual, CLASE_TRABAJO, CLASE_TRABAJO); cxGridView2.DataController.Filter.EndUpdate; ActivarFiltros; ClasePresupuesto := CLASE_PRESUPUESTO; end; function TfrViewPresupuestosContacto.GetClasePresupuesto: String; begin Result := FClasePresupuesto; end; procedure TfrViewPresupuestosContacto.DesactivarFiltros; begin if Assigned(DADataSource.DataTable) then begin if ClasePresupuesto = CLASE_PRESUPUESTO then begin cxGridView2.DataController.Filter.Active := False; cxGridView.DataController.Filter.Active := False; end else begin cxGridView.DataController.Filter.Active := False; cxGridView2.DataController.Filter.Active := False; end; end; end; procedure TfrViewPresupuestosContacto.ActivarFiltros; var lsCodigo : Variant; begin if Assigned(DADataSource.DataTable) then begin lsCodigo := PresupuestosContacto.CODIGO; if ClasePresupuesto = CLASE_PRESUPUESTO then begin cxGridView2.DataController.Filter.Active := True; cxGridView.DataController.Filter.Active := True; cxGridView.DataController.LocateByKey(lsCodigo); end else begin cxGridView.DataController.Filter.Active := True; cxGridView2.DataController.Filter.Active := True; cxGridView2.DataController.LocateByKey(lsCodigo); end; end; end; procedure TfrViewPresupuestosContacto.RefreshGrid; begin // <- Refresco las dos vistas cxGridView.DataController.UpdateItems(False); cxGridView2.DataController.UpdateItems(False); end; procedure TfrViewPresupuestosContacto.SetClasePresupuesto(const Value: String); begin FClasePresupuesto := Value; if FClasePresupuesto = CLASE_PRESUPUESTO then cxGridView.DataController.GotoFirst else cxGridView2.DataController.GotoFirst; end; procedure TfrViewPresupuestosContacto.cxGridViewStylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var IndiceCol: Integer; ASituacion: string; begin inherited; if Assigned(ARecord) then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosObraACEPTADO).Index; ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); if StrToInt(ASituacion) = CTE_ACEPTADO then AStyle := cxStyleAceptado else if StrToInt(ASituacion) = CTE_NO_ACEPTADO then AStyle := cxStyleRechazado; end; end; procedure TfrViewPresupuestosContacto.cxGridView2StylesGetContentStyle( Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); var IndiceCol: Integer; ASituacion: string; begin inherited; if Assigned(ARecord) then begin IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosObraACEPTADO).Index; ASituacion := VarToStr(ARecord.DisplayTexts[IndiceCol]); if StrToInt(ASituacion) = CTE_ACEPTADO then AStyle := cxStyleAceptado else if StrToInt(ASituacion) = CTE_NO_ACEPTADO then AStyle := cxStyleRechazado; end; end; procedure TfrViewPresupuestosContacto.cxGridViewACEPTADOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var IndiceCol: Integer; R : TRect; begin inherited; IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosObraACEPTADO).Index; if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = IntToStr(CTE_ACEPTADO) then begin R := AViewInfo.ContentBounds; ACanvas.FillRect(R); ACanvas.DrawImage(PngImageList, R.Left, R.Top, 3); ADone := True; end else begin R := AViewInfo.ContentBounds; ACanvas.FillRect(R); // ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1); ADone := True; end; end; end.