unit uViewSituacionMontaje; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, dxLayoutControl, cxControls, StdCtrls, DB, uDADataTable, cxContainer, cxEdit, cxLabel, cxDBLabel, cxTextEdit, cxCurrencyEdit, cxDBEdit, ExtCtrls, cxMaskEdit; type TfrViewSituacionMontaje = class(TfrViewBase) dxLayoutControl1Group_Root: TdxLayoutGroup; dxLayoutControl1: TdxLayoutControl; dxLayoutControl1Group1: TdxLayoutGroup; dxLayoutControl1Group2: TdxLayoutGroup; dsDataTable: TDADataSource; dxLayoutControl1Item2: TdxLayoutItem; ImporteContrato2: TcxDBLabel; ImporteContrato1: TcxDBCurrencyEdit; dxLayoutControl1Item7: TdxLayoutItem; Bevel1: TBevel; dxLayoutControl1Item6: TdxLayoutItem; Bevel2: TBevel; dxLayoutControl1Item9: TdxLayoutItem; ImportePedidos: TcxCurrencyEdit; dxLayoutControl1Item11: TdxLayoutItem; ImporteGastos: TcxCurrencyEdit; dxLayoutControl1Item12: TdxLayoutItem; ImporteBeneficio: TcxCurrencyEdit; dxLayoutControl1Item13: TdxLayoutItem; ImporteCobrado: TcxCurrencyEdit; dxLayoutControl1Item14: TdxLayoutItem; ImportePendiente: TcxCurrencyEdit; dxLayoutControl1Item15: TdxLayoutItem; dxLayoutControl1Item1: TdxLayoutItem; PorcentajeBeneficio: TcxLabel; procedure CustomViewCreate(Sender: TObject); procedure ImporteContrato1PropertiesEditValueChanged(Sender: TObject); procedure ImporteBeneficioPropertiesEditValueChanged(Sender: TObject); procedure ImportePendientePropertiesEditValueChanged(Sender: TObject); private FImportePedidos: Double; FImporteOtrosGastos: Double; FImporteCobrado: Double; procedure setImporteCobrado(const Value: Double); procedure setImporteOtrosGastos(const Value: Double); procedure setImportePedidos(const Value: Double); procedure CalcularSituacion; public property pImportePedidos: Double read FImportePedidos write setImportePedidos; property pImporteOtrosGastos: Double read FImporteOtrosGastos write setImporteOtrosGastos; property pImporteCobrado: Double read FImporteCobrado write setImporteCobrado; end; implementation {$R *.dfm} { TfrViewSituacionMontaje } procedure TfrViewSituacionMontaje.CalcularSituacion; var lImporteBeneficio: Double; lPorcentajeBeneficio: Double; lImportePendiente: Double; begin if VarIsNull(ImporteContrato1.Value) then exit; lImporteBeneficio := (ImporteContrato1.Value + (FImportePedidos + FImporteOtrosGastos)); if (ImporteContrato1.Value <> 0) then lPorcentajeBeneficio := (lImporteBeneficio * 100) / ImporteContrato1.Value; lImportePendiente := ImporteContrato1.Value - FImporteCobrado; ImporteBeneficio.Value := lImporteBeneficio; PorcentajeBeneficio.Caption := FormatFloat('0.00%', lPorcentajeBeneficio); ImportePendiente.Value := lImportePendiente; end; procedure TfrViewSituacionMontaje.CustomViewCreate(Sender: TObject); begin inherited; FImportePedidos := 0; FImporteOtrosGastos := 0; FImporteCobrado := 0; end; procedure TfrViewSituacionMontaje.ImporteBeneficioPropertiesEditValueChanged(Sender: TObject); begin if ImporteBeneficio.Value < 0 then begin ImporteBeneficio.Style.Font.Color := clRed; PorcentajeBeneficio.Style.Font.Color := clRed end else begin ImporteBeneficio.Style.Font.Color := clWindowText; PorcentajeBeneficio.Style.Font.Color := clWindowText end; end; procedure TfrViewSituacionMontaje.ImporteContrato1PropertiesEditValueChanged(Sender: TObject); begin CalcularSituacion; end; procedure TfrViewSituacionMontaje.ImportePendientePropertiesEditValueChanged(Sender: TObject); begin if ImportePendiente.Value < 0 then ImportePendiente.Style.Font.Color := clWindowText else ImportePendiente.Style.Font.Color := clRed; end; procedure TfrViewSituacionMontaje.setImporteCobrado(const Value: Double); begin FImporteCobrado := Value; ImporteCobrado.Value := FImporteCobrado; CalcularSituacion; end; procedure TfrViewSituacionMontaje.setImporteOtrosGastos(const Value: Double); begin FImporteOtrosGastos := Value; ImporteGastos.Value := (-1)* FImporteOtrosGastos; CalcularSituacion; end; procedure TfrViewSituacionMontaje.setImportePedidos(const Value: Double); begin FImportePedidos := Value; ImportePedidos.Value := (-1)* FImportePedidos; CalcularSituacion; end; end.