mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 17:25:39 +02:00
978 lines
33 KiB
ObjectPascal
978 lines
33 KiB
ObjectPascal
unit U_NormsComplete;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Contnrs, Forms,
|
||
Dialogs, U_BaseCommon, U_BaseConstants, U_Common, U_SCSComponent, U_SCSLists, Math, ExtCtrls, RzPanel, RzButton,
|
||
cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
|
||
cxEdit, DB, cxDBData, cxGridLevel, cxClasses, cxControls,
|
||
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
|
||
cxGridDBTableView, cxGrid, kbmMemTable, StdCtrls, Mask, RzEdit,
|
||
cxCurrencyEdit, cxCheckBox, cxColorComboBox, cxSpinEdit, cxDropDownEdit,
|
||
cxDBLookupComboBox, cxTextEdit, ActnList, ActnMan, Menus, ComCtrls,
|
||
ToolWin, XPMenu, siComp, siLngLnk, cxMemo, cxImageComboBox, Buttons,
|
||
cxCalendar, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,
|
||
PlatformDefaultStyleActnCtrls;
|
||
|
||
//const
|
||
//Colmn Indexes
|
||
//ciTransToUOM = 10;
|
||
|
||
type
|
||
TF_NormsComplete = class(TForm)
|
||
RzGroupBox1: TRzGroupBox;
|
||
gbOkCancel: TRzGroupBox;
|
||
btOK: TRzBitBtn;
|
||
btCancel: TRzBitBtn;
|
||
RzPanel1: TRzPanel;
|
||
GT_Norms: TcxGridDBTableView;
|
||
GL_Norms: TcxGridLevel;
|
||
gridNorms: TcxGrid;
|
||
mtNorms: TkbmMemTable;
|
||
dsrcNorms: TDataSource;
|
||
lbTotalCost: TLabel;
|
||
neTotalCost: TRzNumericEdit;
|
||
GT_NormsName: TcxGridDBColumn;
|
||
GT_NormsIzm: TcxGridDBColumn;
|
||
GT_NormsKolvo: TcxGridDBColumn;
|
||
GT_NormsPrice: TcxGridDBColumn;
|
||
GT_NormsCost: TcxGridDBColumn;
|
||
Timer_DefineTotals: TTimer;
|
||
Timer_Post: TTimer;
|
||
ActionManager: TActionManager;
|
||
PopupMenu: TPopupMenu;
|
||
N2: TMenuItem;
|
||
XPMenu1: TXPMenu;
|
||
GT_NormsNpp: TcxGridDBColumn;
|
||
btApply: TRzBitBtn;
|
||
lng_Forms: TsiLangLinked;
|
||
GT_NormsTransformToUOM: TcxGridDBColumn;
|
||
GT_NormsGUIDNBCompon: TcxGridDBColumn;
|
||
GT_NormsIcon: TcxGridDBColumn;
|
||
GT_NormsLaborTime: TcxGridDBColumn;
|
||
GT_NormsPricePerTime: TcxGridDBColumn;
|
||
GT_NormsWorkersAmount: TcxGridDBColumn;
|
||
GT_NormsStartDate: TcxGridDBColumn;
|
||
GT_NormsEndDate: TcxGridDBColumn;
|
||
GT_NormsTotalLaborTime: TcxGridDBColumn;
|
||
GT_NormsTotalCost: TcxGridDBColumn;
|
||
GT_NormsCompletePct: TcxGridDBColumn;
|
||
GT_NormsDone: TcxGridDBColumn;
|
||
GT_NormsID: TcxGridDBColumn;
|
||
Label1: TLabel;
|
||
Label2: TLabel;
|
||
edTotalTime: TRzEdit;
|
||
edRemainingTime: TRzEdit;
|
||
procedure gbOkCancelResize(Sender: TObject);
|
||
procedure mtNormsBeforeEdit(DataSet: TDataSet);
|
||
procedure mtNormsAfterEdit(DataSet: TDataSet);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure GT_ResourcesCostPropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure neTotalCostChange(Sender: TObject);
|
||
procedure GT_NormsEditing(Sender: TcxCustomGridTableView;
|
||
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
|
||
procedure GT_NormsEditValueChanged(Sender: TcxCustomGridTableView;
|
||
AItem: TcxCustomGridTableItem);
|
||
procedure Timer_DefineTotalsTimer(Sender: TObject);
|
||
procedure Timer_PostTimer(Sender: TObject);
|
||
procedure GT_NormsNppGetDisplayText(Sender: TcxCustomGridTableItem;
|
||
ARecord: TcxCustomGridRecord; var AText: String);
|
||
procedure GT_NormsIzmGetDisplayText(Sender: TcxCustomGridTableItem;
|
||
ARecord: TcxCustomGridRecord; var AText: String);
|
||
procedure GT_NormsPriceGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
procedure GT_NormsInitEdit(Sender: TcxCustomGridTableView;
|
||
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit);
|
||
procedure GT_NormsKolvoGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
procedure GT_NormsFocusedRecordChanged(
|
||
Sender: TcxCustomGridTableView; APrevFocusedRecord,
|
||
AFocusedRecord: TcxCustomGridRecord;
|
||
ANewItemRecordFocusingChanged: Boolean);
|
||
procedure GT_NormsCustomDrawCell(Sender: TcxCustomGridTableView;
|
||
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
|
||
var ADone: Boolean);
|
||
procedure Act_LoadPricesFromNBExecute(Sender: TObject);
|
||
procedure neTotalCostKeyPress(Sender: TObject; var Key: Char);
|
||
procedure neTotalCostExit(Sender: TObject);
|
||
procedure GT_NormsLaborTimeGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
procedure GT_NormsLaborTimePropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure GT_NormsPricePerTimePropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure GT_NormsKolvoPropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure GT_NormsWorkersAmountPropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure GT_NormsStartDatePropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure GT_NormsTotalLaborTimeGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
procedure GT_NormsTotalLaborTimeCustomDrawCell(
|
||
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
||
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
||
procedure GT_NormsEndDateCustomDrawCell(Sender: TcxCustomGridTableView;
|
||
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
|
||
var ADone: Boolean);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure GT_NormsCompletePctPropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
private
|
||
GForm: TForm;
|
||
FCanHaveActiveComponents: Boolean;
|
||
FCanHaveDismountAccount: Boolean;
|
||
FComponsWithZeroPrice: Boolean;
|
||
FFolder: TSCSCatalog;
|
||
FLastTotalCost: Double;
|
||
FNormResources: TSCSNormsResources;
|
||
//FReportName: String;
|
||
|
||
Edit: TcxCustomEdit;
|
||
//Colmn Indexes
|
||
//FTransToUOMIdx: Integer;
|
||
FIdsChangedTotalLaborTime: TIntList;
|
||
|
||
procedure CalcEndDate;
|
||
//procedure DefineTotalCost;
|
||
procedure DefineTotals;
|
||
procedure PrepareForm;
|
||
procedure OnDrawCellAsChanged(ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo);
|
||
function OnPriceValidate(const aFieldName: String; var aDisplayValue: Variant): Double;
|
||
procedure OnTotalCostChange;
|
||
procedure SendPriceAndCostToCurrRecord(APrice, ACost: Double);
|
||
procedure SendStringToCurrRecord(AFieldName, AValue: String);
|
||
procedure SendToMT;
|
||
procedure SetActions;
|
||
public
|
||
constructor Create(AOwner: TComponent; AForm: TForm); overload;
|
||
destructor Destroy; override;
|
||
|
||
function Execute(AFolder: TSCSCatalog;
|
||
ACanHaveActiveComponents, ACanHaveDismountAccount, AComponsWithZeroPrice: Boolean): Boolean;
|
||
end;
|
||
|
||
//var
|
||
//F_NormsComplete: TF_NormsComplete;
|
||
|
||
implementation
|
||
Uses U_Main, Unit_DM_SCS, U_DMCommon;
|
||
{$R *.dfm}
|
||
|
||
{ TF_NormsComplete }
|
||
|
||
constructor TF_NormsComplete.Create(AOwner: TComponent; AForm: TForm);
|
||
begin
|
||
GForm := AForm;
|
||
inherited Create(AOwner);
|
||
end;
|
||
|
||
destructor TF_NormsComplete.Destroy;
|
||
begin
|
||
|
||
inherited;
|
||
end;
|
||
|
||
function TF_NormsComplete.Execute(AFolder: TSCSCatalog;
|
||
ACanHaveActiveComponents, ACanHaveDismountAccount, AComponsWithZeroPrice: Boolean): Boolean;
|
||
begin
|
||
Result := false;
|
||
if AFolder <> nil then
|
||
begin
|
||
FFolder := AFolder;
|
||
FCanHaveActiveComponents := ACanHaveActiveComponents;
|
||
FCanHaveDismountAccount := ACanHaveDismountAccount;
|
||
FComponsWithZeroPrice := AComponsWithZeroPrice;
|
||
//FReportName := AReportName;
|
||
FLastTotalCost := -1;
|
||
FNormResources := nil;
|
||
|
||
//mtNorms.Active := False;
|
||
//mtNorms.Active := True;
|
||
dsrcNorms.DataSet := TF_Main(GForm).GSCSBase.CurrProject.MTNormsComplete; //TF_Main(GForm).DM.tSQL_NormsComplete;
|
||
dsrcNorms.DataSet.DisableControls;
|
||
try
|
||
PrepareForm;
|
||
SendToMT;
|
||
finally
|
||
dsrcNorms.DataSet.EnableControls;
|
||
end;
|
||
|
||
dsrcNorms.DataSet.EnableControls;
|
||
try
|
||
if ShowModal = mrOk then
|
||
begin
|
||
Result := true;
|
||
end;
|
||
finally
|
||
dsrcNorms.DataSet.DisableControls;
|
||
dsrcNorms.DataSet := nil;
|
||
if FNormResources <> nil then
|
||
FreeAndNil(FNormResources);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.gbOkCancelResize(Sender: TObject);
|
||
begin
|
||
SetMiddleControlChilds(TControl(Sender), TControl(Self));
|
||
end;
|
||
|
||
procedure TF_NormsComplete.FormCreate(Sender: TObject);
|
||
var
|
||
i: Integer;
|
||
Action: TAction;
|
||
|
||
begin
|
||
for i := 0 to ActionManager.ActionCount - 1 do
|
||
begin
|
||
Action := TAction(ActionManager.Actions[i]);
|
||
Action.Hint := Action.Caption;
|
||
end;
|
||
|
||
//mtNorms.FieldDefs.Add(fnID, ftAutoInc);
|
||
//mtNorms.FieldDefs.Add(fnGuid, ftString, 40);
|
||
//mtNorms.FieldDefs.Add(fnIsResource, ftBoolean);
|
||
//mtNorms.FieldDefs.Add(fnIsModified, ftBoolean);
|
||
//mtNorms.FieldDefs.Add(fnObjectAddress, ftInteger);
|
||
//mtNorms.FieldDefs.Add(fnTransToUOM, ftBoolean);
|
||
//mtNorms.FieldDefs.Add(fnGuidNBComponent, ftString, 40);
|
||
//mtNorms.FieldDefs.Add(fnIconType, ftInteger);
|
||
|
||
//mtNorms.FieldDefs.Add(fnName, ftString, 255);
|
||
//mtNorms.FieldDefs.Add(fnArticulProducer, ftString, 255);
|
||
//mtNorms.FieldDefs.Add(fnArticulDistributor, ftString, 255);
|
||
//mtNorms.FieldDefs.Add(fnGuidProducer, ftString, 255);
|
||
//mtNorms.FieldDefs.Add(fnIzm, ftString, 50);
|
||
//mtNorms.FieldDefs.Add(fnLaborTime, ftInteger);
|
||
//mtNorms.FieldDefs.Add(fnPricePerTime, ftFloat);
|
||
//mtNorms.FieldDefs.Add(fnKolvo, ftFloat);
|
||
//mtNorms.FieldDefs.Add(fnPrice, ftFloat);
|
||
//mtNorms.FieldDefs.Add(fnCost, ftFloat);
|
||
//mtNorms.FieldDefs.Add(fnPriceNB, ftFloat);
|
||
|
||
FIdsChangedTotalLaborTime := TIntList.Create;
|
||
end;
|
||
|
||
|
||
procedure TF_NormsComplete.PrepareForm;
|
||
var
|
||
CurrencyName: String;
|
||
DisplayFormatM: String;
|
||
begin
|
||
gbOkCancelResize(gbOkCancel);
|
||
//Caption := FReportName + ' - ' + FFolder.GetNameForVisible;
|
||
|
||
CurrencyName := TF_Main(GForm).GCurrencyM.NameBrief;
|
||
if CurrencyName <> '' then
|
||
CurrencyName := ', ' + CurrencyName;
|
||
|
||
//30.12.2013
|
||
DisplayFormatM := GetDisplayFormat(TF_Main(GForm).GCurrencyM.NameBrief);
|
||
GT_NormsLaborTime.Caption := TF_Main(GForm).GT_NormsResourcesLaborTime.Caption;
|
||
GT_NormsPricePerTime.Caption := TF_Main(GForm).GT_NormsResourcesPricePerTime.Caption;
|
||
TcxCurrencyEditProperties(GT_NormsPricePerTime.Properties).DisplayFormat := DisplayFormatM; //GetDisplayFormatForFloat;
|
||
TcxCurrencyEditProperties(GT_NormsPricePerTime.Properties).DecimalPlaces := FloatPrecision;
|
||
|
||
GT_NormsTotalLaborTime.Caption := TF_Main(GForm).GT_NormsResourcesLaborTime.Caption;
|
||
GT_NormsPricePerTime.Caption := TF_Main(GForm).GT_NormsResourcesPricePerTime.Caption;
|
||
|
||
//FTransToUOMIdx := GT_NormsTransformToUOM.Index;
|
||
SetCxCurrencyEditProperties(GT_NormsPrice.Properties); //29.08.2012 TcxCurrencyEditProperties(GT_NormsPrice.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
||
SetCxCurrencyEditProperties(GT_NormsCost.Properties); //29.08.2012 TcxCurrencyEditProperties(GT_NormsCost.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
||
//SetCxCurrencyEditProperties(GT_NormsPriceNB.Properties); //29.08.2012 TcxCurrencyEditProperties(GT_NormsPriceNB.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
||
SetCxCurrencyEditProperties(GT_NormsTotalCost.Properties);
|
||
|
||
GT_NormsKolvo.Caption := TF_Main(GForm).GT_NormsResourcesKolvo.Caption;
|
||
TcxCurrencyEditProperties(GT_NormsKolvo.Properties).DisplayFormat := GetDisplayFormatForFloatByPrecision(PrecisionNormKolvo);
|
||
TcxCurrencyEditProperties(GT_NormsKolvo.Properties).DecimalPlaces := PrecisionNormKolvo;
|
||
GT_NormsCost.Caption := TF_Main(GForm).GT_NormsResourcesCost.Caption;
|
||
|
||
//neTotalCost.DisplayFormat := GetDisplayFormatForFloat; //GetDisplayFormat(TF_Main(GForm).GCurrencyM.NameBrief);
|
||
//neTotalCost.IntegersOnly := false;
|
||
|
||
//GT_NormsPrice.Caption := cReportForm_Msg1 + CurrencyName;
|
||
//GT_NormsCost.Caption := cReportForm_Msg2 + CurrencyName;
|
||
//GT_NormsPriceNB.Caption := cReportForm_Msg1_2 + CurrencyName;
|
||
//lbTotalCost.Caption := cReportForm_Msg3 + CurrencyName;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.OnDrawCellAsChanged(ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo);
|
||
var
|
||
RecID, CellColor: Integer;
|
||
begin
|
||
RecID := AViewInfo.GridRecord.Values[GT_NormsID.Index];
|
||
if FIdsChangedTotalLaborTime.IndexOf(RecID) <> -1 then
|
||
begin
|
||
CellColor := clBlue;
|
||
if dsrcNorms.DataSet.RecNo > 0 then
|
||
if RecID = dsrcNorms.DataSet.FieldByName(fnID).AsInteger then
|
||
CellColor := clYellow;
|
||
ACanvas.Font.Color := CellColor;
|
||
end;
|
||
end;
|
||
|
||
function TF_NormsComplete.OnPriceValidate(const aFieldName: String; var aDisplayValue: Variant): Double;
|
||
var
|
||
OldPrice: Double;
|
||
NewPrice: Double;
|
||
begin
|
||
OldPrice := mtNorms.FieldByName(aFieldName).AsFloat;
|
||
if aDisplayValue = '' then
|
||
begin
|
||
aDisplayValue := FloatToStr(OldPrice);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
NewPrice := StrToFloat_My(aDisplayValue);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> TF_Main(GForm).FUOM <20><> <20><><EFBFBD><EFBFBD>
|
||
if mtNorms.FieldByName(fnTransToUOM).AsBoolean then
|
||
begin
|
||
NewPrice := FloatInUOM(NewPrice, umMetr, TF_Main(GForm).FUOM);
|
||
if NewPrice <> OldPrice then
|
||
begin
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(aFieldName).AsFloat := NewPrice;
|
||
mtNorms.Post;
|
||
end;
|
||
end;
|
||
Result := NewPrice;
|
||
if OldPrice = NewPrice then
|
||
Exit; ///// EXIT /////
|
||
|
||
end;
|
||
|
||
procedure TF_NormsComplete.OnTotalCostChange;
|
||
var
|
||
NewValue: Double;
|
||
PercentFromLast: Double;
|
||
|
||
RecordCost: Double;
|
||
RecordPrice: Double;
|
||
|
||
RecNo: Integer;
|
||
i: Integer;
|
||
begin
|
||
NewValue := neTotalCost.Value;
|
||
if NewValue = 0 then
|
||
begin
|
||
neTotalCost.OnChange := nil;
|
||
try
|
||
neTotalCost.Value := FLastTotalCost;
|
||
finally
|
||
neTotalCost.OnChange := neTotalCostChange;
|
||
end;
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
|
||
PercentFromLast := RoundX((NewValue * 100) / FLastTotalCost, 20);
|
||
|
||
RecNo := mtNorms.RecNo;
|
||
mtNorms.DisableControls;
|
||
try
|
||
for i := 0 to mtNorms.RecordCount - 1 do
|
||
begin
|
||
mtNorms.RecNo := i+1;
|
||
|
||
RecordCost := mtNorms.FieldByName(fnCost).AsFloat;
|
||
RecordCost := RecordCost * (PercentFromLast / 100);
|
||
RecordPrice := RoundCP(RecordCost / mtNorms.FieldByName(fnKolvo).AsFloat);
|
||
|
||
SendPriceAndCostToCurrRecord(RecordPrice, RecordCost);
|
||
end;
|
||
mtNorms.RecNo := RecNo;
|
||
finally
|
||
mtNorms.EnableControls;
|
||
end;
|
||
FLastTotalCost := NewValue;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.mtNormsBeforeEdit(DataSet: TDataSet);
|
||
begin
|
||
//beep;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.mtNormsAfterEdit(DataSet: TDataSet);
|
||
begin
|
||
if DataSet.State <> dsBrowse then
|
||
DataSet.FieldByName(fnIsModified).AsBoolean := true;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.SendStringToCurrRecord(AFieldName, AValue: String);
|
||
begin
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(AFieldName).AsString := AValue;
|
||
mtNorms.Post;
|
||
end;
|
||
|
||
|
||
procedure TF_NormsComplete.SendToMT;
|
||
var
|
||
Norm: TSCSNormGroup;
|
||
i: Integer;
|
||
MTPositions: TStringList;
|
||
NormKey: String;
|
||
NormKeyIdx: Integer;
|
||
OldTotalLaborTime: Integer;
|
||
|
||
function GetNormKey(const aGUID, aCypher, aName: String; aPrice, aPricePerTime: Double; aLaborTime: Integer): String;
|
||
begin
|
||
Result := aGUID+'_'+aCypher+'_'+aName+'_'+FloatToStr(aPrice)+'_'+FloatToStr(aPricePerTime)+'_'+IntToStr(aLaborTime);
|
||
end;
|
||
|
||
begin
|
||
BeginProgress(pcPreparingReport);
|
||
|
||
MTPositions := CreateStringListSorted;
|
||
try
|
||
FNormResources := FFolder.GetAllNormsResources([nrNorms], false, FCanHaveActiveComponents, FCanHaveDismountAccount, FComponsWithZeroPrice, false, true, false, true, true);
|
||
//FNormResources := FFolder.GetAllNormsResources([nrNorms], false, true, false, true, true, false);
|
||
|
||
dsrcNorms.DataSet.DisableControls;
|
||
try
|
||
//dsrcNorms.DataSet.Active := false;
|
||
//dsrcNorms.DataSet.Active := true;
|
||
FIdsChangedTotalLaborTime.Clear;
|
||
for i := 1 to dsrcNorms.DataSet.RecordCount do
|
||
begin
|
||
dsrcNorms.DataSet.RecNo := i;
|
||
MTPositions.AddObject(GetNormKey(
|
||
dsrcNorms.DataSet.FieldByName(fnGuid).AsString,
|
||
dsrcNorms.DataSet.FieldByName(fnCypher).AsString,
|
||
dsrcNorms.DataSet.FieldByName(fnName).AsString,
|
||
dsrcNorms.DataSet.FieldByName(fnCost).AsFloat,
|
||
dsrcNorms.DataSet.FieldByName(fnPricePerTime).AsFloat,
|
||
dsrcNorms.DataSet.FieldByName(fnLaborTime).AsInteger
|
||
), TObject(i));
|
||
end;
|
||
|
||
for i := 0 to FNormResources.Norms.Count - 1 do
|
||
begin
|
||
Norm := TSCSNormGroup(FNormResources.Norms[i]);
|
||
NormKey := GetNormKey(Norm.GuidNB, Norm.Cypher, Norm.Name, RoundCP(Norm.Price), RoundCP(Norm.PricePerTime), Norm.LaborTime);
|
||
NormKeyIdx := MTPositions.IndexOf(NormKey);
|
||
if NormKeyIdx = -1 then
|
||
begin
|
||
dsrcNorms.DataSet.Append;
|
||
dsrcNorms.DataSet.FieldByName(fnGuid).AsString := Norm.GuidNB;
|
||
dsrcNorms.DataSet.FieldByName(fnCypher).AsString := Norm.Cypher;
|
||
|
||
dsrcNorms.DataSet.FieldByName(fnName).AsString := Norm.Name;
|
||
dsrcNorms.DataSet.FieldByName(fnIzm).AsString := Norm.Izm_;
|
||
dsrcNorms.DataSet.FieldByName(fnLaborTime).AsInteger := Norm.LaborTime;
|
||
dsrcNorms.DataSet.FieldByName(fnPricePerTime).AsFloat := RoundCP(Norm.PricePerTime);
|
||
//dsrcNorms.DataSet.FieldByName(fnKolvo).AsFloat := RoundX(Norm.GrpKolvo, PrecisionNormKolvo);
|
||
//dsrcNorms.DataSet.FieldByName(fnPrice).AsFloat := Round3(Norm.Price);
|
||
dsrcNorms.DataSet.FieldByName(fnCost).AsFloat := RoundCP(Norm.Price);
|
||
dsrcNorms.DataSet.FieldByName(fnTotalCost).AsFloat := RoundX(Norm.TotalCost, PrecisionNormKolvo);
|
||
dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger := Round(Norm.LaborTime*Norm.Kolvo);
|
||
dsrcNorms.DataSet.FieldByName(fnDone).AsInteger := biFalse;
|
||
dsrcNorms.DataSet.Post;
|
||
end
|
||
else
|
||
begin
|
||
dsrcNorms.DataSet.RecNo := Integer(MTPositions.Objects[NormKeyIdx]);
|
||
OldTotalLaborTime := dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger;
|
||
|
||
dsrcNorms.DataSet.Edit;
|
||
dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger := Round(Norm.LaborTime*Norm.Kolvo);
|
||
CalcEndDate;
|
||
dsrcNorms.DataSet.Post;
|
||
if OldTotalLaborTime <> dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger then
|
||
FIdsChangedTotalLaborTime.Add(dsrcNorms.DataSet.FieldByName(fnID).AsInteger);
|
||
end;
|
||
end;
|
||
//dsrcNorms.DataSet.SortOn(fnName, []);
|
||
|
||
DefineTotals;
|
||
finally
|
||
dsrcNorms.DataSet.EnableControls;
|
||
//mtNorms.AfterPost := mtResourcesAfterPost;
|
||
if dsrcNorms.DataSet.RecordCount > 0 then
|
||
dsrcNorms.DataSet.First;
|
||
end;
|
||
finally
|
||
FreeAndNil(MTPositions);
|
||
EndProgress;
|
||
end;
|
||
//DefineTotalCost;
|
||
SetActions;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.SetActions;
|
||
begin
|
||
|
||
end;
|
||
|
||
procedure TF_NormsComplete.CalcEndDate;
|
||
var
|
||
IsBrowse: Boolean;
|
||
begin
|
||
if (dsrcNorms.DataSet.FieldByName(fnStartDate).AsFloat <> 0) and (dsrcNorms.DataSet.FieldByName(fnWorkersAmount).AsFloat <> 0) then
|
||
begin
|
||
IsBrowse := dsrcNorms.DataSet.State = dsBrowse;
|
||
if IsBrowse then
|
||
dsrcNorms.DataSet.Edit;
|
||
if dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger > 0 then
|
||
dsrcNorms.DataSet.FieldByName(fnEndDate).AsDateTime := dsrcNorms.DataSet.FieldByName(fnStartDate).AsDateTime +
|
||
RoundUp(
|
||
(dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger/(cntWorkDayHours*60)) / dsrcNorms.DataSet.FieldByName(fnWorkersAmount).AsInteger
|
||
) - 1
|
||
else
|
||
dsrcNorms.DataSet.FieldByName(fnEndDate).AsDateTime := dsrcNorms.DataSet.FieldByName(fnStartDate).AsDateTime;
|
||
if IsBrowse then
|
||
dsrcNorms.DataSet.Post;
|
||
end;
|
||
end;
|
||
|
||
{
|
||
procedure TF_NormsComplete.DefineTotalCost;
|
||
var
|
||
RecNo: Integer;
|
||
i: Integer;
|
||
CurrCost: Double;
|
||
|
||
SavedOnChange: TNotifyevent;
|
||
begin
|
||
CurrCost := 0;
|
||
|
||
RecNo := mtNorms.RecNo;
|
||
mtNorms.DisableControls;
|
||
try
|
||
for i := 0 to mtNorms.RecordCount - 1 do
|
||
begin
|
||
mtNorms.RecNo := i+1;
|
||
CurrCost := CurrCost + mtNorms.FieldByName(fnCost).AsFloat;
|
||
end;
|
||
finally
|
||
mtNorms.EnableControls;
|
||
mtNorms.RecNo := RecNo;
|
||
end;
|
||
FLastTotalCost := CurrCost;
|
||
|
||
SavedOnChange := neTotalCost.OnChange;
|
||
neTotalCost.OnChange := nil;
|
||
try
|
||
neTotalCost.Value := CurrCost;
|
||
finally
|
||
neTotalCost.OnChange := SavedOnChange;
|
||
end;
|
||
end;}
|
||
|
||
procedure TF_NormsComplete.DefineTotals;
|
||
var
|
||
RecNo: Integer;
|
||
i: Integer;
|
||
TotalTime: Integer;
|
||
RemainingTime: Double;
|
||
begin
|
||
TotalTime := 0;
|
||
RemainingTime := 0;
|
||
if dsrcNorms.DataSet.RecordCount > 0 then // Tolik 27/12/2019 --
|
||
begin
|
||
RecNo := dsrcNorms.DataSet.RecNo;
|
||
dsrcNorms.DataSet.DisableControls;
|
||
try
|
||
for i := 0 to dsrcNorms.DataSet.RecordCount - 1 do
|
||
begin
|
||
dsrcNorms.DataSet.RecNo := i+1;
|
||
TotalTime := TotalTime + dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger;
|
||
RemainingTime := RemainingTime + dsrcNorms.DataSet.FieldByName(fnTotalLaborTime).AsInteger * (dsrcNorms.DataSet.FieldByName(fnCompletePct).AsFloat/100);
|
||
end;
|
||
finally
|
||
dsrcNorms.DataSet.EnableControls;
|
||
dsrcNorms.DataSet.RecNo := RecNo;
|
||
end;
|
||
end;
|
||
|
||
edTotalTime.Text := GetDisplayTextToNORMLaborTime(IntToStr(TotalTime), true);
|
||
edRemainingTime.Text := GetDisplayTextToNORMLaborTime(IntToStr(TotalTime - Round(RemainingTime)), true);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_ResourcesCostPropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
||
var
|
||
ValueFloat: Double;
|
||
IsCalcNormTotal: Boolean;
|
||
begin
|
||
try
|
||
if DisplayValue = '' then
|
||
begin
|
||
DisplayValue := FloatToStr(mtNorms.FieldByName(fnCost).AsFloat);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
ValueFloat := StrToFloat_My(DisplayValue);
|
||
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(fnCost).AsFloat := ValueFloat;
|
||
mtNorms.Post;
|
||
|
||
TF_Main(GForm).DM.CalcNormCostTime(mtNorms, fnCost, IsCalcNormTotal);
|
||
except
|
||
end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.SendPriceAndCostToCurrRecord(APrice,
|
||
ACost: Double);
|
||
begin
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(fnPrice).AsFloat := APrice;
|
||
mtNorms.FieldByName(fnCost).AsFloat := ACost;
|
||
mtNorms.FieldByName(fnIsModified).AsBoolean := true;
|
||
mtNorms.Post;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.neTotalCostChange(Sender: TObject);
|
||
begin
|
||
OnTotalCostChange;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsEditing(Sender: TcxCustomGridTableView;
|
||
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
|
||
begin
|
||
//mtNorms.Edit;
|
||
//mtNorms.FieldByName(fnIsModified).AsBoolean := true;
|
||
//mtNorms.Post;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsEditValueChanged(
|
||
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
||
begin
|
||
if (Sender.DataController.IsEditing) and (mtNorms.State <> dsBrowse) then
|
||
begin
|
||
Timer_Post.Enabled := true;
|
||
end;
|
||
if not GProjectChanged then // Tolik 28/08/2019 --
|
||
SetProjectChanged(true);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.Timer_DefineTotalsTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
DefineTotals;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.Timer_PostTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
if mtNorms.State <> dsBrowse then
|
||
begin
|
||
GT_Norms.DataController.Post;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_NormsComplete.GT_NormsNppGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
begin
|
||
AText := IntToStr(ARecord.Index + 1);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsIzmGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
begin
|
||
//try
|
||
// if ARecord.Values[FTransToUOMIdx] <> null then
|
||
// if ARecord.Values[FTransToUOMIdx] = true then
|
||
// AText := GetNameUOM(TF_Main(GForm).FUOM, true);
|
||
//except
|
||
//end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsKolvoGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
var
|
||
ValueFloat: Double;
|
||
begin
|
||
//try
|
||
// if ARecord.Values[FTransToUOMIdx] <> null then
|
||
// if ARecord.Values[FTransToUOMIdx] = true then
|
||
// begin
|
||
// ValueFloat := StrToFloat_My(AText);
|
||
// ValueFloat := FloatInUOM(ValueFloat, umMetr, TF_Main(GForm).FUOM);
|
||
// AText := FloatToStr(RoundCP(ValueFloat));
|
||
// end;
|
||
//except
|
||
//end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsPriceGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
begin
|
||
//try
|
||
// if ARecord.Values[FTransToUOMIdx] <> null then
|
||
// if ARecord.Values[FTransToUOMIdx] = true then
|
||
// AText := GetDisplayTextToNORMExpenseForLength(AText, TF_Main(GForm).FUOM);
|
||
//except
|
||
//end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsInitEdit(
|
||
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
|
||
AEdit: TcxCustomEdit);
|
||
begin
|
||
if (AItem = GT_NormsPrice) {or (AItem = GT_NormsPriceNB)} then
|
||
AEdit.EditValue := GetDisplayTextToNORMExpenseForLength(AEdit.EditValue, TF_Main(GForm).FUOM);
|
||
Edit := AEdit;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsFocusedRecordChanged(
|
||
Sender: TcxCustomGridTableView; APrevFocusedRecord,
|
||
AFocusedRecord: TcxCustomGridRecord;
|
||
ANewItemRecordFocusingChanged: Boolean);
|
||
var
|
||
CanEditIzm: Boolean;
|
||
begin
|
||
CanEditIzm := true;
|
||
if mtNorms.Active then
|
||
if mtNorms.FieldByName(fnTransToUOM).AsBoolean then
|
||
CanEditIzm := false;
|
||
GT_NormsIzm.Options.Editing := CanEditIzm;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsCustomDrawCell(
|
||
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
||
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
||
begin
|
||
//OnNormsResourcesCustomDrawCell(ACanvas, AViewInfo, GT_NormsIsResource.Index, GT_NormsGUIDNBCompon.Index, -1, false);
|
||
if AViewInfo.GridRecord.Values[GT_NormsDone.Index] = biTrue then
|
||
ACanvas.Font.Style := ACanvas.Font.Style + [fsStrikeOut];
|
||
end;
|
||
|
||
procedure TF_NormsComplete.Act_LoadPricesFromNBExecute(Sender: TObject);
|
||
var
|
||
i: Integer;
|
||
GUIDCompon: String;
|
||
IDCompon: Integer;
|
||
NBPrice: Double;
|
||
Compon: TSCSComponent;
|
||
BookMark: String;
|
||
begin
|
||
{GT_NormsPriceNB.Visible := true;
|
||
|
||
BookMark := mtNorms.Bookmark;
|
||
try
|
||
Compon := TSCSComponent.Create(F_NormBase);
|
||
for i := 0 to GT_Norms.Controller.SelectedRecordCount - 1 do
|
||
begin
|
||
//GT_Norms.Controller.SelectedRows[i].
|
||
GUIDCompon := GT_Norms.Controller.SelectedRecords[i].Values[GT_NormsGUIDNBCompon.Index];
|
||
IDCompon := F_NormBase.DM.GetIntFromTableByGUID(tnComponent, fnID, GUIDCompon, qmPhisical);
|
||
if IDCompon <> 0 then
|
||
begin
|
||
Compon.Clear;
|
||
Compon.LoadComponentByID(IDCompon, false);
|
||
DefineComponPriceOnCopyToOtherBase(Compon, nil, F_ProjMan.GSCSBase.CurrProject, F_NormBase, F_ProjMan);
|
||
//GT_Norms.Controller.SelectedRecords[i].Values[GT_NormsPriceNB.Index] := Compon.Price;
|
||
//GT_Norms.DataController.Values[GT_Norms.Controller.SelectedRecords[i].Index, GT_NormsPriceNB.Index] := Compon.Price;
|
||
if mtNorms.Locate(fnGuidNBComponent, GUIDCompon, []) then
|
||
begin
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(fnPriceNB).AsFloat := RoundCP(Compon.Price);
|
||
mtNorms.Post;
|
||
end;
|
||
end;
|
||
end;
|
||
Compon.Free;
|
||
finally
|
||
mtNorms.Bookmark := BookMark;
|
||
end;}
|
||
end;
|
||
|
||
|
||
procedure TF_NormsComplete.neTotalCostKeyPress(Sender: TObject;
|
||
var Key: Char);
|
||
begin
|
||
CorrectMaskKeyPress(Key);
|
||
//if Key = #13 then
|
||
// OnTotalCostChange;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.neTotalCostExit(Sender: TObject);
|
||
begin
|
||
//OnTotalCostChange;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsLaborTimeGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
begin
|
||
AText := GetDisplayTextToNORMLaborTime(AText);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsLaborTimePropertiesValidate(
|
||
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
var
|
||
ValueFloat: Double;
|
||
IsCalcNormTotal: Boolean;
|
||
begin
|
||
try
|
||
if DisplayValue = '' then
|
||
begin
|
||
DisplayValue := FloatToStr(mtNorms.FieldByName(fnLaborTime).AsInteger);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
ValueFloat := StrToFloat_My(DisplayValue);
|
||
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(fnLaborTime).AsFloat := ValueFloat;
|
||
mtNorms.Post;
|
||
|
||
TF_Main(GForm).DM.CalcNormCostTime(mtNorms, fnLaborTime, IsCalcNormTotal);
|
||
except
|
||
end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsPricePerTimePropertiesValidate(
|
||
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
var
|
||
ValueFloat: Double;
|
||
IsCalcNormTotal: Boolean;
|
||
begin
|
||
try
|
||
if DisplayValue = '' then
|
||
begin
|
||
DisplayValue := FloatToStr(mtNorms.FieldByName(fnPricePerTime).AsFloat);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
ValueFloat := StrToFloat_My(DisplayValue);
|
||
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(fnPricePerTime).AsFloat := ValueFloat;
|
||
mtNorms.Post;
|
||
|
||
TF_Main(GForm).DM.CalcNormCostTime(mtNorms, fnPricePerTime, IsCalcNormTotal);
|
||
except
|
||
end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsKolvoPropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
||
var
|
||
ValueFloat: Double;
|
||
begin
|
||
try
|
||
if DisplayValue = '' then
|
||
begin
|
||
DisplayValue := FloatToStr(mtNorms.FieldByName(fnKolvo).AsFloat);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
ValueFloat := StrToFloat_My(DisplayValue);
|
||
|
||
mtNorms.Edit;
|
||
mtNorms.FieldByName(fnKolvo).AsFloat := ValueFloat;
|
||
//mtNorms.FieldByName(fnExpenseForLength).AsFloat := 0;
|
||
//mtNorms.FieldByName(fnCountForPoint).AsFloat := 0;
|
||
//mtNorms.FieldByName(fnStepOfPoint).AsFloat := 0;
|
||
mtNorms.Post;
|
||
except
|
||
end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsWorkersAmountPropertiesValidate(
|
||
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
var
|
||
ValueInt: Integer;
|
||
begin
|
||
//TcxSpinEditProperties(GT_NormsWorkersAmount.Properties).OnValidate := nil;
|
||
TcxDateEdit(Sender).Properties.OnValidate := nil;
|
||
try
|
||
if DisplayValue = '' then
|
||
begin
|
||
DisplayValue := FloatToStr(mtNorms.FieldByName(fnWorkersAmount).AsInteger);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
ValueInt := StrToInt(DisplayValue);
|
||
|
||
dsrcNorms.DataSet.Edit;
|
||
dsrcNorms.DataSet.FieldByName(fnWorkersAmount).AsInteger := ValueInt;
|
||
dsrcNorms.DataSet.Post;
|
||
|
||
CalcEndDate;
|
||
finally
|
||
//TcxSpinEditProperties(GT_NormsWorkersAmount.Properties).OnValidate := GT_NormsWorkersAmountPropertiesValidate;
|
||
TcxDateEdit(Sender).Properties.OnValidate := GT_NormsWorkersAmountPropertiesValidate;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsStartDatePropertiesValidate(
|
||
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
var
|
||
ValueDate: TDate;
|
||
begin
|
||
//TcxDateEditProperties(GT_NormsStartDate.Properties).OnValidate := nil;
|
||
TcxDateEdit(Sender).Properties.OnValidate := nil;
|
||
try
|
||
if DisplayValue = '' then
|
||
begin
|
||
DisplayValue := FloatToStr(mtNorms.FieldByName(fnStartDate).AsFloat);
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
ValueDate := StrToDate(DisplayValue);
|
||
|
||
dsrcNorms.DataSet.Edit;
|
||
dsrcNorms.DataSet.FieldByName(fnStartDate).AsFloat := ValueDate;
|
||
dsrcNorms.DataSet.Post;
|
||
|
||
CalcEndDate;
|
||
finally
|
||
//TcxDateEditProperties(GT_NormsStartDate.Properties).OnValidate := GT_NormsStartDatePropertiesValidate;
|
||
TcxDateEdit(Sender).Properties.OnValidate := GT_NormsStartDatePropertiesValidate;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsTotalLaborTimeGetDisplayText(
|
||
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
||
var AText: String);
|
||
begin
|
||
AText := GetDisplayTextToNORMLaborTime(AText);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsTotalLaborTimeCustomDrawCell(
|
||
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
||
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
||
begin
|
||
OnDrawCellAsChanged(ACanvas, AViewInfo);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsEndDateCustomDrawCell(
|
||
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
||
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
||
begin
|
||
OnDrawCellAsChanged(ACanvas, AViewInfo);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.FormDestroy(Sender: TObject);
|
||
begin
|
||
FreeAndNil(FIdsChangedTotalLaborTime);
|
||
end;
|
||
|
||
procedure TF_NormsComplete.GT_NormsCompletePctPropertiesValidate(
|
||
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
begin
|
||
Timer_DefineTotals.Enabled := true;
|
||
end;
|
||
|
||
end.
|