|
@@ -5,7 +5,7 @@ interface
|
|
uses
|
|
uses
|
|
ZjGrid,
|
|
ZjGrid,
|
|
SysUtils, Classes, DB, DBClient, ADODB, sdIDTree, sdDB, Provider,
|
|
SysUtils, Classes, DB, DBClient, ADODB, sdIDTree, sdDB, Provider,
|
|
- Windows, BillsTree;
|
|
|
|
|
|
+ Windows, BillsTree, sdProvider, Variants;
|
|
|
|
|
|
type
|
|
type
|
|
TZJJLType = (ztFx, ztGcl);
|
|
TZJJLType = (ztFx, ztGcl);
|
|
@@ -24,54 +24,26 @@ type
|
|
TZJJLInfoRec = Record
|
|
TZJJLInfoRec = Record
|
|
FBFXName: string;
|
|
FBFXName: string;
|
|
PegName: string;
|
|
PegName: string;
|
|
|
|
+ BeginPeg: string;
|
|
|
|
+ EndPeg: string;
|
|
BGLCode: string;
|
|
BGLCode: string;
|
|
DrawingCode: string;
|
|
DrawingCode: string;
|
|
UnitName: string;
|
|
UnitName: string;
|
|
end;
|
|
end;
|
|
|
|
|
|
TZJJLData = class(TDataModule)
|
|
TZJJLData = class(TDataModule)
|
|
- atZJJL: TADOTable;
|
|
|
|
- dspZJJL: TDataSetProvider;
|
|
|
|
- cdsZJJL: TClientDataSet;
|
|
|
|
- cdsZJJLID: TIntegerField;
|
|
|
|
- cdsZJJLBillsID: TIntegerField;
|
|
|
|
- cdsZJJLCode: TWideStringField;
|
|
|
|
- cdsZJJLCertificateCode: TWideStringField;
|
|
|
|
- cdsZJJLBillsCode: TWideStringField;
|
|
|
|
- cdsZJJLFormulaMemo: TMemoField;
|
|
|
|
- cdsZJJLType: TIntegerField;
|
|
|
|
-
|
|
|
|
- cdsZJJLView: TClientDataSet;
|
|
|
|
- cdsZJJLViewID: TIntegerField;
|
|
|
|
- cdsZJJLViewBillsID: TIntegerField;
|
|
|
|
- cdsZJJLViewCode: TWideStringField;
|
|
|
|
- cdsZJJLViewCertificateCode: TWideStringField;
|
|
|
|
- cdsZJJLViewBillsCode: TWideStringField;
|
|
|
|
- cdsZJJLViewFormulaMemo: TMemoField;
|
|
|
|
- cdsZJJLViewType: TIntegerField;
|
|
|
|
- cdsZJJLRelaFile: TMemoField;
|
|
|
|
- cdsZJJLViewRelaFile: TMemoField;
|
|
|
|
- cdsZJJLBGLCode: TMemoField;
|
|
|
|
- cdsZJJLPegName: TWideStringField;
|
|
|
|
- cdsZJJLFBFXName: TWideStringField;
|
|
|
|
- cdsZJJLBeginPeg: TWideStringField;
|
|
|
|
- cdsZJJLEndPeg: TWideStringField;
|
|
|
|
- cdsZJJLUnitName: TWideStringField;
|
|
|
|
- cdsZJJLDrawingCode: TWideStringField;
|
|
|
|
- cdsZJJLViewBGLCode: TMemoField;
|
|
|
|
- cdsZJJLViewPegName: TWideStringField;
|
|
|
|
- cdsZJJLViewFBFXName: TWideStringField;
|
|
|
|
- cdsZJJLViewBeginPeg: TWideStringField;
|
|
|
|
- cdsZJJLViewEndPeg: TWideStringField;
|
|
|
|
- cdsZJJLViewUnitName: TWideStringField;
|
|
|
|
- cdsZJJLViewDrawingCode: TWideStringField;
|
|
|
|
- procedure cdsZJJLViewAfterScroll(DataSet: TDataSet);
|
|
|
|
|
|
+ sdpZJJL: TsdADOProvider;
|
|
|
|
+ sddZJJL: TsdDataSet;
|
|
|
|
+ sdvZJJL: TsdDataView;
|
|
|
|
+ sdpHistory: TsdADOProvider;
|
|
|
|
+ sddHistory: TsdDataSet;
|
|
|
|
+ procedure sdvZJJLBeforeValueChange(AValue: TsdValue;
|
|
|
|
+ const NewValue: Variant; var Allow: Boolean);
|
|
private
|
|
private
|
|
FPhaseData: TObject;
|
|
FPhaseData: TObject;
|
|
FCanModified: Boolean;
|
|
FCanModified: Boolean;
|
|
FNewID: Integer;
|
|
FNewID: Integer;
|
|
FOrgDataList: TList;
|
|
FOrgDataList: TList;
|
|
- FDetailGrid: TZJGrid;
|
|
|
|
|
|
|
|
procedure GenerateZJJLNode(ANode: TsdIDTreeNode; AType: Integer);
|
|
procedure GenerateZJJLNode(ANode: TsdIDTreeNode; AType: Integer);
|
|
|
|
|
|
@@ -91,6 +63,21 @@ type
|
|
var Allow: Boolean);
|
|
var Allow: Boolean);
|
|
procedure DetailGridCellTextChanged(Sender: TObject; Col, Row: Integer);
|
|
procedure DetailGridCellTextChanged(Sender: TObject; Col, Row: Integer);
|
|
|
|
|
|
|
|
+ function GetFieldStrDef(ANode: TsdIDTreeNode; const AFieldName, ADef: string): string;
|
|
|
|
+ function GetPegNode(ANode: TsdIDTreeNode): TsdIDTreeNode;
|
|
|
|
+ function GetBGLCode(ANode: TsdIDTreeNode): string;
|
|
|
|
+ // 取树结构的第ALevel层节点的名称(level从0开始)
|
|
|
|
+ function GetNameByLevel(ANode: TsdIDTreeNode; ALevel: Integer): string;
|
|
|
|
+ function GetFBFXName(ANode, APegNode: TsdIDTreeNode): string;
|
|
|
|
+ function GetPegName(ANode: TsdIDTreeNode): string;
|
|
|
|
+
|
|
|
|
+ function GetInfoRecByCode_2(ABillsID: Integer): TZJJLInfoRec;
|
|
|
|
+ function GetInfoRecByB_Code_2(ABillsID: Integer): TZJJLInfoRec;
|
|
|
|
+ function GetInfoRec_2(ABillsID, AType: Integer): TZJJLInfoRec;
|
|
|
|
+
|
|
|
|
+ function GetNewHistoryID: Integer;
|
|
|
|
+ procedure SetHistory(const AFieldName, AValue: string; AZJJL_Rec: TsdDataRecord);
|
|
|
|
+
|
|
// 向父项检测,直至提取到图册号为止
|
|
// 向父项检测,直至提取到图册号为止
|
|
function GetDrawingCode(ANode: TsdIDTreeNode): string;
|
|
function GetDrawingCode(ANode: TsdIDTreeNode): string;
|
|
|
|
|
|
@@ -106,7 +93,7 @@ type
|
|
|
|
|
|
procedure GenerateAll;
|
|
procedure GenerateAll;
|
|
procedure GenerateAllByB_Code;
|
|
procedure GenerateAllByB_Code;
|
|
- procedure AssignedCurData;
|
|
|
|
|
|
+ procedure AssignedCurData(ARec: TsdDataRecord; ADetailGrid: TZJGrid);
|
|
|
|
|
|
function GetInfoRecByCode(ABillsID: Integer): TZJJLInfoRec;
|
|
function GetInfoRecByCode(ABillsID: Integer): TZJJLInfoRec;
|
|
function GetInfoRecByB_Code(ABillsID: Integer): TZJJLInfoRec;
|
|
function GetInfoRecByB_Code(ABillsID: Integer): TZJJLInfoRec;
|
|
@@ -117,14 +104,13 @@ type
|
|
property PhaseData: TObject read FPhaseData;
|
|
property PhaseData: TObject read FPhaseData;
|
|
property MainBillsTree: TsdIDTree read GetMainBillsTree;
|
|
property MainBillsTree: TsdIDTree read GetMainBillsTree;
|
|
property CanModified: Boolean read FCanModified write FCanModified;
|
|
property CanModified: Boolean read FCanModified write FCanModified;
|
|
- property DetailGrid: TZJGrid read FDetailGrid;
|
|
|
|
end;
|
|
end;
|
|
|
|
|
|
implementation
|
|
implementation
|
|
|
|
|
|
uses
|
|
uses
|
|
PhaseData, ProjectData, BillsDm, UtilMethods, ProjectProperty, ZhAPI,
|
|
PhaseData, ProjectData, BillsDm, UtilMethods, ProjectProperty, ZhAPI,
|
|
- BillsCompileDm, BillsMeasureDm;
|
|
|
|
|
|
+ BillsCompileDm, BillsMeasureDm, mPegFilter;
|
|
|
|
|
|
{$R *.dfm}
|
|
{$R *.dfm}
|
|
|
|
|
|
@@ -135,15 +121,10 @@ begin
|
|
inherited Create(nil);
|
|
inherited Create(nil);
|
|
FPhaseData := APhaseData;
|
|
FPhaseData := APhaseData;
|
|
FOrgDataList := TList.Create;
|
|
FOrgDataList := TList.Create;
|
|
- FDetailGrid := TZJGrid.Create(nil);
|
|
|
|
- FDetailGrid.Options := FDetailGrid.Options + [goWarpText];
|
|
|
|
- FDetailGrid.OnCellCanEdit := DetailGridCellCanEdit;
|
|
|
|
- FDetailGrid.OnCellTextChanged := DetailGridCellTextChanged;
|
|
|
|
end;
|
|
end;
|
|
|
|
|
|
destructor TZJJLData.Destroy;
|
|
destructor TZJJLData.Destroy;
|
|
begin
|
|
begin
|
|
- FDetailGrid.Free;
|
|
|
|
ClearObjects(FOrgDataList);
|
|
ClearObjects(FOrgDataList);
|
|
FOrgDataList.Free;
|
|
FOrgDataList.Free;
|
|
inherited;
|
|
inherited;
|
|
@@ -157,18 +138,24 @@ end;
|
|
|
|
|
|
procedure TZJJLData.Open(AConnection: TADOConnection);
|
|
procedure TZJJLData.Open(AConnection: TADOConnection);
|
|
begin
|
|
begin
|
|
- atZJJL.Connection := AConnection;
|
|
|
|
- cdsZJJL.Open;
|
|
|
|
- cdsZJJL.IndexFieldNames := 'ID';
|
|
|
|
- cdsZJJLView.CloneCursor(cdsZJJL, True);
|
|
|
|
- cdsZJJLView.IndexFieldNames := 'ID';
|
|
|
|
|
|
+ sdpZJJL.Connection := AConnection;
|
|
|
|
+ sddZJJL.Open;
|
|
|
|
+ sddZJJL.AddIndex('idxID', 'ID');
|
|
|
|
+ sddZJJL.AddIndex('idxBillsID', 'BillsID');
|
|
|
|
+ sdvZJJL.Open;
|
|
|
|
+
|
|
|
|
+ sdpHistory.Connection := AConnection;
|
|
|
|
+ sddHistory.Open;
|
|
|
|
+ sddHistory.AddIndex('idxID', 'ID');
|
|
|
|
+ sddHistory.AddIndex('idxHistory', 'BillsID;Type;FieldName');
|
|
|
|
|
|
CheckZjjlVerison;
|
|
CheckZjjlVerison;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TZJJLData.Save;
|
|
procedure TZJJLData.Save;
|
|
begin
|
|
begin
|
|
- cdsZJJL.ApplyUpdates(0);
|
|
|
|
|
|
+ sddZJJL.Save;
|
|
|
|
+ sddHistory.Save;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TZJJLData.CheckLastXmj(AID: Integer): Boolean;
|
|
function TZJJLData.CheckLastXmj(AID: Integer): Boolean;
|
|
@@ -182,34 +169,35 @@ begin
|
|
Result := stnChild.Rec.ValueByName('B_Code').AsString <> '';
|
|
Result := stnChild.Rec.ValueByName('B_Code').AsString <> '';
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TZJJLData.AssignedCurData;
|
|
|
|
|
|
+procedure TZJJLData.AssignedCurData(ARec: TsdDataRecord; ADetailGrid: TZJGrid);
|
|
var
|
|
var
|
|
iRowIndex: Integer;
|
|
iRowIndex: Integer;
|
|
- InfoRec: TZJJLInfoRec;
|
|
|
|
-begin
|
|
|
|
- FDetailGrid.OnCellTextChanged := nil;
|
|
|
|
- FDetailGrid.FixedRowCount := 0;
|
|
|
|
- FDetailGrid.FixedColCount := 0;
|
|
|
|
- FDetailGrid.ColCount := 1;
|
|
|
|
- FDetailGrid.RowCount := 9;
|
|
|
|
- FDetailGrid.DefaultColWidth := 300;
|
|
|
|
- for iRowIndex := 0 to FDetailGrid.RowCount - 1 do
|
|
|
|
- FDetailGrid[0, iRowIndex].Align := gaTopLeft;
|
|
|
|
- InfoRec := GetInfoRec(cdsZJJLViewBillsID.AsInteger, cdsZJJLViewType.AsInteger);
|
|
|
|
- FDetailGrid.Cells[0, 0].Text := '变更令号:' + cdsZJJLViewBGLCode.AsString;
|
|
|
|
- FDetailGrid.Cells[0, 1].Text := '桩号或部位:' + cdsZJJLViewPegName.AsString;
|
|
|
|
- FDetailGrid.Cells[0, 2].Text := '分部分项工程:' + cdsZJJLViewFBFXName.AsString;
|
|
|
|
- FDetailGrid.Cells[0, 3].Text := '计量单元:' + cdsZJJLViewUnitName.AsString;
|
|
|
|
- FDetailGrid.Cells[0, 4].Text := '图号:' + cdsZJJLViewDrawingCode.AsString;
|
|
|
|
- FDetailGrid.Cells[0, 5].Text := '计算式说明:';
|
|
|
|
- FDetailGrid.Cells[0, 6].Text := cdsZJJLViewFormulaMemo.AsString;
|
|
|
|
- FDetailGrid.Cells[0, 6].Align := gaTopLeft;
|
|
|
|
- FDetailGrid.RowHeights[6] := 57;
|
|
|
|
- FDetailGrid.Cells[0, 7].Text := '计算草图几何尺寸:';
|
|
|
|
- FDetailGrid.Cells[0, 8].Text := cdsZJJLViewRelaFile.AsString;
|
|
|
|
- FDetailGrid.Cells[0, 8].Align := gaTopLeft;
|
|
|
|
- FDetailGrid.RowHeights[8] := 57;
|
|
|
|
- FDetailGrid.OnCellTextChanged := DetailGridCellTextChanged;
|
|
|
|
|
|
+begin
|
|
|
|
+ ADetailGrid.OnCellTextChanged := nil;
|
|
|
|
+ ADetailGrid.FixedRowCount := 0;
|
|
|
|
+ ADetailGrid.FixedColCount := 0;
|
|
|
|
+ ADetailGrid.ColCount := 1;
|
|
|
|
+ ADetailGrid.RowCount := 11;
|
|
|
|
+ ADetailGrid.DefaultColWidth := 300;
|
|
|
|
+ for iRowIndex := 0 to ADetailGrid.RowCount - 1 do
|
|
|
|
+ ADetailGrid[0, iRowIndex].Align := gaTopLeft;
|
|
|
|
+ if not Assigned(ARec) then Exit;
|
|
|
|
+ ADetailGrid.Cells[0, 0].Text := '变更令号:' + ARec.ValueByName('BGLCode').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 1].Text := '部位:' + ARec.ValueByName('PegName').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 2].Text := '起始桩号:' + ARec.ValueByName('BeginPeg').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 3].Text := '终止桩号:' + ARec.ValueByName('EndPeg').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 4].Text := '分部分项工程:' + ARec.ValueByName('FBFXName').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 5].Text := '计量单元:' + ARec.ValueByName('UnitName').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 6].Text := '图号:' + ARec.ValueByName('DrawingCode').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 7].Text := '计算式说明:';
|
|
|
|
+ ADetailGrid.Cells[0, 8].Text := ARec.ValueByName('FormulaMemo').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 8].Align := gaTopLeft;
|
|
|
|
+ ADetailGrid.RowHeights[8] := 57;
|
|
|
|
+ ADetailGrid.Cells[0, 9].Text := '计算草图几何尺寸:';
|
|
|
|
+ ADetailGrid.Cells[0, 10].Text := ARec.ValueByName('RelaFile').AsString;
|
|
|
|
+ ADetailGrid.Cells[0, 10].Align := gaTopLeft;
|
|
|
|
+ ADetailGrid.RowHeights[10] := 57;
|
|
|
|
+ ADetailGrid.OnCellTextChanged := DetailGridCellTextChanged;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TZJJLData.GenerateAll;
|
|
procedure TZJJLData.GenerateAll;
|
|
@@ -268,32 +256,33 @@ end;
|
|
|
|
|
|
procedure TZJJLData.DeleteAll;
|
|
procedure TZJJLData.DeleteAll;
|
|
begin
|
|
begin
|
|
- cdsZJJL.First;
|
|
|
|
- while not cdsZJJL.Eof do
|
|
|
|
- cdsZJJL.Delete;
|
|
|
|
|
|
+ sddZJJL.DeleteAll;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TZJJLData.RestoreOrgData;
|
|
procedure TZJJLData.RestoreOrgData;
|
|
|
|
|
|
- function CreateNodeData: TZJJLNode;
|
|
|
|
|
|
+ function CreateNodeData(ARec: TsdDataRecord): TZJJLNode;
|
|
begin
|
|
begin
|
|
Result := TZJJLNode.Create;
|
|
Result := TZJJLNode.Create;
|
|
- Result.FBillsID := cdsZJJLBillsID.AsInteger;
|
|
|
|
- Result.FCode := cdsZJJLCode.AsString;
|
|
|
|
- Result.FCertificateCode := cdsZJJLCertificateCode.AsString;
|
|
|
|
- Result.FBillsCode := cdsZJJLBillsCode.AsString;
|
|
|
|
- Result.FFormulaMemo := cdsZJJLFormulaMemo.AsString;
|
|
|
|
- Result.FRelaFile := cdsZJJLRelaFile.AsString;
|
|
|
|
- Result.FType := cdsZJJLType.AsInteger;
|
|
|
|
|
|
+
|
|
|
|
+ Result.FBillsID := ARec.ValueByName('BillsID').AsInteger;
|
|
|
|
+ Result.FCode := ARec.ValueByName('Code').AsString;
|
|
|
|
+ Result.FCertificateCode := ARec.ValueByName('CertificateCode').AsString;
|
|
|
|
+ Result.FBillsCode := ARec.ValueByName('BillsCode').AsString;
|
|
|
|
+ Result.FFormulaMemo := ARec.ValueByName('FormulaMemo').AsString;
|
|
|
|
+ Result.FRelaFile := ARec.ValueByName('RelaFile').AsString;
|
|
|
|
+ Result.FType := ARec.ValueByName('Type').AsInteger;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+var
|
|
|
|
+ i: Integer;
|
|
|
|
+ vRec: TsdDataRecord;
|
|
begin
|
|
begin
|
|
FOrgDataList.Clear;
|
|
FOrgDataList.Clear;
|
|
- cdsZJJL.First;
|
|
|
|
- while not cdsZJJL.Eof do
|
|
|
|
|
|
+ for i := 0 to sddZJJL.RecordCount - 1 do
|
|
begin
|
|
begin
|
|
- FOrgDataList.Add(CreateNodeData);
|
|
|
|
- cdsZJJL.Next;
|
|
|
|
|
|
+ vRec := sddZJJL.Records[i];
|
|
|
|
+ FOrgDataList.Add(CreateNodeData(vRec));
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -326,11 +315,6 @@ begin
|
|
Result := CheckStageCompleteData(ANode.ID);
|
|
Result := CheckStageCompleteData(ANode.ID);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TZJJLData.cdsZJJLViewAfterScroll(DataSet: TDataSet);
|
|
|
|
-begin
|
|
|
|
- AssignedCurData;
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
procedure TZJJLData.DetailGridCellCanEdit(Sender: TObject;
|
|
procedure TZJJLData.DetailGridCellCanEdit(Sender: TObject;
|
|
const ACoord: TPoint; var Allow: Boolean);
|
|
const ACoord: TPoint; var Allow: Boolean);
|
|
begin
|
|
begin
|
|
@@ -339,85 +323,13 @@ begin
|
|
end;
|
|
end;
|
|
|
|
|
|
function TZJJLData.GetInfoRecByCode(ABillsID: Integer): TZJJLInfoRec;
|
|
function TZJJLData.GetInfoRecByCode(ABillsID: Integer): TZJJLInfoRec;
|
|
-
|
|
|
|
- function GetBGLCode(ANode: TsdIDTreeNode): string;
|
|
|
|
- begin
|
|
|
|
- with TProjectData(TPhaseData(FPhaseData).ProjectData) do
|
|
|
|
- Result := BillsMeasureData.GatherRelaBGL(ANode);
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
- function GetPegName(APegNode: TsdIDTreeNode): string;
|
|
|
|
- begin
|
|
|
|
- if Assigned(APegNode) then
|
|
|
|
- Result := APegNode.Rec.ValueByName('Name').AsString
|
|
|
|
- else
|
|
|
|
- Result := '';
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
- function GetPegNode(ANode: TsdIDTreeNode): TsdIDTreeNode;
|
|
|
|
- begin
|
|
|
|
- Result := nil;
|
|
|
|
- if not Assigned(ANode) then Exit;
|
|
|
|
- if CheckPeg(ANode.Rec.ValueByName('Name').AsString) then
|
|
|
|
- Result := ANode
|
|
|
|
- else
|
|
|
|
- Result := GetPegNode(ANode.Parent);
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
- // 取树结构的第ALevel层节点的名称(level从0开始)
|
|
|
|
- function GetNameByLevel(ANode: TsdIDTreeNode; ALevel: Integer): string;
|
|
|
|
- begin
|
|
|
|
- Result := '';
|
|
|
|
- if not Assigned(ANode) then Exit;
|
|
|
|
- if ANode.Level = ALevel then
|
|
|
|
- Result := ANode.Rec.ValueByName('Name').AsString
|
|
|
|
- else if ANode.Level > ALevel then
|
|
|
|
- Result := GetNameByLevel(ANode.Parent, ALevel);
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
- function GetFBFXName(ANode, APegNode: TsdIDTreeNode): string;
|
|
|
|
- var
|
|
|
|
- vCurNode: TsdIDTreeNode;
|
|
|
|
- begin
|
|
|
|
- Result := '';
|
|
|
|
- if not Assigned(ANode) then Exit;
|
|
|
|
- // 如果计量单元节点的名称为桩号(转化为判断计量单元节点与桩号节点为同一个)
|
|
|
|
- if not Assigned(APegNode) or (ANode.ID = APegNode.ID) then
|
|
|
|
- begin
|
|
|
|
- // 取树结构的第三、四层节点的名称
|
|
|
|
- Result := GetNameByLevel(ANode, 2);
|
|
|
|
- if (Result <> '') and (GetNameByLevel(ANode, 3) <> '') then
|
|
|
|
- Result := Result + ',';
|
|
|
|
- Result := Result + GetNameByLevel(ANode, 3);
|
|
|
|
- end
|
|
|
|
- // 否则,合并[桩号节点的子节点]至[计量单元节点的父节点]的名称
|
|
|
|
- else
|
|
|
|
- begin
|
|
|
|
- vCurNode := ANode.Parent;
|
|
|
|
- // 转化为判断层次,层次大于[桩号节点的子节点]的层次
|
|
|
|
- while vCurNode.Level > APegNode.Level do
|
|
|
|
- begin
|
|
|
|
- Result := vCurNode.Rec.ValueByName('Name').AsString + ',' + Result;
|
|
|
|
- vCurNode := vCurNode.Parent;
|
|
|
|
- end;
|
|
|
|
- end;
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
- function GetFieldStrDef(ANode: TsdIDTreeNode; const AFieldName, ADef: string): string;
|
|
|
|
- begin
|
|
|
|
- if Assigned(ANode) then
|
|
|
|
- Result := ANode.Rec.ValueByName(AFieldName).AsString
|
|
|
|
- else
|
|
|
|
- Result := '';
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
var
|
|
var
|
|
vPeg, vNode: TsdIDTreeNode;
|
|
vPeg, vNode: TsdIDTreeNode;
|
|
begin
|
|
begin
|
|
vNode := MainBillsTree.FindNode(ABillsID);
|
|
vNode := MainBillsTree.FindNode(ABillsID);
|
|
vPeg := GetPegNode(vNode);
|
|
vPeg := GetPegNode(vNode);
|
|
Result.BGLCode := GetBGLCode(vNode);
|
|
Result.BGLCode := GetBGLCode(vNode);
|
|
- Result.PegName := GetPegName(vPeg);
|
|
|
|
|
|
+ Result.PegName := GetFieldStrDef(vPeg, 'Name', '');
|
|
Result.FBFXName := GetFBFXName(vNode, vPeg);
|
|
Result.FBFXName := GetFBFXName(vNode, vPeg);
|
|
Result.UnitName := GetFieldStrDef(vNode, 'Name', '');
|
|
Result.UnitName := GetFieldStrDef(vNode, 'Name', '');
|
|
Result.DrawingCode := GetDrawingCode(vNode);
|
|
Result.DrawingCode := GetDrawingCode(vNode);
|
|
@@ -425,19 +337,16 @@ end;
|
|
|
|
|
|
procedure TZJJLData.DetailGridCellTextChanged(Sender: TObject; Col,
|
|
procedure TZJJLData.DetailGridCellTextChanged(Sender: TObject; Col,
|
|
Row: Integer);
|
|
Row: Integer);
|
|
|
|
+var
|
|
|
|
+ Rec: TsdDataRecord;
|
|
begin
|
|
begin
|
|
- if (Row = 6) then
|
|
|
|
- begin
|
|
|
|
- cdsZJJLView.Edit;
|
|
|
|
- cdsZJJLViewFormulaMemo.AsString := TZJGrid(Sender).Cells[Col, Row].Text;
|
|
|
|
- cdsZJJLView.Post;
|
|
|
|
- end
|
|
|
|
- else if (Row = 8) then
|
|
|
|
- begin
|
|
|
|
- cdsZJJLView.Edit;
|
|
|
|
- cdsZJJLViewRelaFile.AsString := TZJGrid(Sender).Cells[Col, Row].Text;
|
|
|
|
- cdsZJJLView.Post;
|
|
|
|
- end;
|
|
|
|
|
|
+ Rec := sdvZJJL.Current;
|
|
|
|
+ if not Assigned(Rec) then Exit;
|
|
|
|
+
|
|
|
|
+ if (Row = 8) then
|
|
|
|
+ Rec.ValueByName('FormulaMemo').AsString := TZJGrid(Sender).Cells[Col, Row].Text
|
|
|
|
+ else if (Row = 10) then
|
|
|
|
+ Rec.ValueByName('RelaFile').AsString := TZJGrid(Sender).Cells[Col, Row].Text;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TZJJLData.GenerateAllByB_Code;
|
|
procedure TZJJLData.GenerateAllByB_Code;
|
|
@@ -506,38 +415,49 @@ procedure TZJJLData.GenerateZJJLNode(ANode: TsdIDTreeNode;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ function GetFieldValue(const AFieldName, ADefaultValue: string): string;
|
|
|
|
+ var
|
|
|
|
+ HistoryRec: TsdDataRecord;
|
|
|
|
+ begin
|
|
|
|
+ HistoryRec := sddHistory.FindKey('idxHistory', VarArrayOf([ANode.ID, AType, AFieldName]));
|
|
|
|
+ if Assigned(HistoryRec) then
|
|
|
|
+ Result := HistoryRec.ValueByName('FieldValue').AsString
|
|
|
|
+ else
|
|
|
|
+ Result := ADefaultValue;
|
|
|
|
+ end;
|
|
|
|
+
|
|
var
|
|
var
|
|
ZJJLNode: TZJJLNode;
|
|
ZJJLNode: TZJJLNode;
|
|
|
|
+ vInfoRec: TZJJLInfoRec;
|
|
|
|
+ Rec: TsdDataRecord;
|
|
begin
|
|
begin
|
|
- cdsZJJL.Append;
|
|
|
|
- cdsZJJLID.AsInteger := FNewID;
|
|
|
|
- cdsZJJLBillsID.AsInteger := ANode.ID;
|
|
|
|
- cdsZJJLType.AsInteger := AType;
|
|
|
|
- ZJJLNode := GetOrgZJJLNode(ANode.ID);
|
|
|
|
-
|
|
|
|
- cdsZJJLCode.AsString := GetNewCode;
|
|
|
|
|
|
+ Rec := sddZJJL.Add;
|
|
|
|
+ Rec.ValueByName('ID').AsInteger := FNewID;
|
|
|
|
+ Rec.ValueByName('BillsID').AsInteger := ANode.ID;
|
|
|
|
+ Rec.ValueByName('Type').AsInteger := AType;
|
|
if AType = Ord(ztFx) then
|
|
if AType = Ord(ztFx) then
|
|
- cdsZJJLBillsCode.AsString := ANode.Rec.ValueByName('Code').AsString
|
|
|
|
|
|
+ Rec.ValueByName('BillsCode').AsString := ANode.Rec.ValueByName('Code').AsString
|
|
else if AType = Ord(ztGcl) then
|
|
else if AType = Ord(ztGcl) then
|
|
- cdsZJJLBillsCode.AsString := ANode.Rec.ValueByName('B_Code').AsString;
|
|
|
|
- if Assigned(ZJJLNode) then
|
|
|
|
- begin
|
|
|
|
- cdsZJJLCertificateCode.AsString := ZJJLNode.FCertificateCode;
|
|
|
|
- cdsZJJLFormulaMemo.AsString := ZJJLNode.FFormulaMemo;
|
|
|
|
- cdsZJJLRelaFile.AsString := ZJJLNode.FRelaFile;
|
|
|
|
- end;
|
|
|
|
- cdsZJJL.Post;
|
|
|
|
|
|
+ Rec.ValueByName('BillsCode').AsString := ANode.Rec.ValueByName('B_Code').AsString;
|
|
|
|
+
|
|
|
|
+ Rec.ValueByName('Code').AsString := GetFieldValue('Code', GetNewCode);
|
|
|
|
+ Rec.ValueByName('CertificateCode').AsString := GetFieldValue('CertificateCode', '');
|
|
|
|
+ Rec.ValueByName('FormulaMemo').AsString := GetFieldValue('FormulaMemo', '');
|
|
|
|
+ Rec.ValueByName('RelaFile').AsString := GetFieldValue('RelaFile', '');
|
|
|
|
+
|
|
|
|
+ vInfoRec := GetInfoRec_2(ANode.ID, AType);
|
|
|
|
+ Rec.ValueByName('BGLCode').AsString := GetFieldValue('BGLCode', vInfoRec.BGLCode);
|
|
|
|
+ Rec.ValueByName('PegName').AsString := GetFieldValue('PegName', vInfoRec.PegName);
|
|
|
|
+ Rec.ValueByName('BeginPeg').AsString := GetFieldValue('BeginPeg', vInfoRec.BeginPeg);
|
|
|
|
+ Rec.ValueByName('EndPeg').AsString := GetFieldValue('EndPeg', vInfoRec.EndPeg);
|
|
|
|
+ Rec.ValueByName('FBFXName').AsString := GetFieldValue('FBFXName', vInfoRec.FBFXName);
|
|
|
|
+ Rec.ValueByName('UnitName').AsString := GetFieldValue('UnitName', vInfoRec.UnitName);
|
|
|
|
+ Rec.ValueByName('DrawingCode').AsString := GetFieldValue('DrawingCode', vInfoRec.DrawingCode);
|
|
|
|
+
|
|
Inc(FNewID);
|
|
Inc(FNewID);
|
|
end;
|
|
end;
|
|
|
|
|
|
function TZJJLData.GetInfoRecByB_Code(ABillsID: Integer): TZJJLInfoRec;
|
|
function TZJJLData.GetInfoRecByB_Code(ABillsID: Integer): TZJJLInfoRec;
|
|
-
|
|
|
|
- function GetBGLCode(ANode: TsdIDTreeNode): string;
|
|
|
|
- begin
|
|
|
|
- with TProjectData(TPhaseData(FPhaseData).ProjectData) do
|
|
|
|
- Result := BillsMeasureData.GatherRelaBGL(ANode);
|
|
|
|
- end;
|
|
|
|
-
|
|
|
|
var
|
|
var
|
|
vNode: TsdIDTreeNode;
|
|
vNode: TsdIDTreeNode;
|
|
begin
|
|
begin
|
|
@@ -564,7 +484,7 @@ var
|
|
begin
|
|
begin
|
|
with TProjectData(TPhaseData(FPhaseData).ProjectData) do
|
|
with TProjectData(TPhaseData(FPhaseData).ProjectData) do
|
|
begin
|
|
begin
|
|
- Rec := BillsData.sddBills.FindKey('idxID', cdsZJJLViewBillsID.AsInteger);
|
|
|
|
|
|
+ Rec := BillsData.sddBills.FindKey('idxID', sdvZJJL.Current.ValueByName('BillsID').AsInteger);
|
|
BillsMeasureData.sdvBillsMeasure.LocateInControl(Rec);
|
|
BillsMeasureData.sdvBillsMeasure.LocateInControl(Rec);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
@@ -586,28 +506,227 @@ end;
|
|
procedure TZJJLData.CheckZjjlVerison;
|
|
procedure TZJJLData.CheckZjjlVerison;
|
|
|
|
|
|
procedure LoadVersion0Info;
|
|
procedure LoadVersion0Info;
|
|
- var
|
|
|
|
- sSql: string;
|
|
|
|
|
|
+ var
|
|
|
|
+ i: Integer;
|
|
|
|
+ Rec: TsdDataRecord;
|
|
ZJJLInfoRec: TZJJLInfoRec;
|
|
ZJJLInfoRec: TZJJLInfoRec;
|
|
begin
|
|
begin
|
|
- cdsZJJL.First;
|
|
|
|
- while not cdsZJJL.Eof do
|
|
|
|
|
|
+ for i := 0 to sddZJJL.RecordCount - 1 do
|
|
|
|
+ begin
|
|
|
|
+ Rec := sddZJJL.Records[i];
|
|
|
|
+ ZJJLInfoRec := GetInfoRec(Rec.ValueByName('BillsID').AsInteger, Rec.ValueByName('Type').AsInteger);
|
|
|
|
+ Rec.ValueByName('BGLCode').AsString := ZJJLInfoRec.BGLCode;
|
|
|
|
+ Rec.ValueByName('PegName').AsString := ZJJLInfoRec.PegName;
|
|
|
|
+ Rec.ValueByName('FBFXName').AsString := ZJJLInfoRec.FBFXName;
|
|
|
|
+ Rec.ValueByName('UnitName').AsString := ZJJLInfoRec.UnitName;
|
|
|
|
+ Rec.ValueByName('DrawingCode').AsString := ZJJLInfoRec.DrawingCode;
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ procedure LoadVersion0History;
|
|
|
|
+ var
|
|
|
|
+ i, j, iNewID: Integer;
|
|
|
|
+ Rec: TsdDataRecord;
|
|
|
|
+ begin
|
|
|
|
+ for i := 0 to sddZJJL.RecordCount - 1 do
|
|
begin
|
|
begin
|
|
- ZJJLInfoRec := GetInfoRec(cdsZJJLBillsID.AsInteger, cdsZJJLType.AsInteger);
|
|
|
|
- cdsZJJL.Edit;
|
|
|
|
- cdsZJJLBGLCode.AsString := ZJJLInfoRec.BGLCode;
|
|
|
|
- cdsZJJLPegName.AsString := ZJJLInfoRec.PegName;
|
|
|
|
- cdsZJJLFBFXName.AsString := ZJJLInfoRec.FBFXName;
|
|
|
|
- cdsZJJLUnitName.AsString := ZJJLInfoRec.UnitName;
|
|
|
|
- cdsZJJLDrawingCode.AsString := ZJJLInfoRec.DrawingCode;
|
|
|
|
- cdsZJJL.Post;
|
|
|
|
- cdsZJJL.Next;
|
|
|
|
|
|
+ Rec := sddZJJL.Records[i];
|
|
|
|
+ SetHistory('CertificateCode', Rec.ValueByName('CertificateCode').AsString, Rec);
|
|
|
|
+ SetHistory('FormulaMemo', Rec.ValueByName('FormulaMemo').AsString, Rec);
|
|
|
|
+ SetHistory('RelaFile', Rec.ValueByName('RelaFile').AsString, Rec);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
begin
|
|
begin
|
|
if TPhaseData(PhaseData).PhaseProperty.ZjjlVersion = 0 then
|
|
if TPhaseData(PhaseData).PhaseProperty.ZjjlVersion = 0 then
|
|
|
|
+ begin
|
|
LoadVersion0Info;
|
|
LoadVersion0Info;
|
|
|
|
+ LoadVersion0History;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetInfoRec_2(ABillsID, AType: Integer): TZJJLInfoRec;
|
|
|
|
+begin
|
|
|
|
+ if AType = 0 then
|
|
|
|
+ Result := GetInfoRecByCode_2(ABillsID)
|
|
|
|
+ else if AType = 1 then
|
|
|
|
+ Result := GetInfoRecByB_Code_2(ABillsID);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetInfoRecByB_Code_2(ABillsID: Integer): TZJJLInfoRec;
|
|
|
|
+var
|
|
|
|
+ vNode: TsdIDTreeNode;
|
|
|
|
+ sPeg: string;
|
|
|
|
+ vPegFilter: TPegStrFilter;
|
|
|
|
+begin
|
|
|
|
+ vNode := MainBillsTree.FindNode(ABillsID);
|
|
|
|
+ sPeg := GetPegName(vNode);
|
|
|
|
+ Result.BGLCode := GetBGLCode(vNode);
|
|
|
|
+ if Assigned(vNode.Parent) then
|
|
|
|
+ Result.PegName := vNode.Parent.Rec.ValueByName('Name').AsString;
|
|
|
|
+ if sPeg <> '' then
|
|
|
|
+ begin
|
|
|
|
+ vPegFilter := TPegStrFilter.Create;
|
|
|
|
+ vPegFilter.PegStr := sPeg;
|
|
|
|
+ Result.BeginPeg := vPegFilter.BeginPeg;
|
|
|
|
+ Result.EndPeg := vPegFilter.EndPeg;
|
|
|
|
+ vPegFilter.Free;
|
|
|
|
+ end;
|
|
|
|
+ Result.UnitName := vNode.Rec.ValueByName('Name').AsString;
|
|
|
|
+ Result.DrawingCode := GetDrawingCode(vNode);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetInfoRecByCode_2(ABillsID: Integer): TZJJLInfoRec;
|
|
|
|
+var
|
|
|
|
+ vPeg, vNode: TsdIDTreeNode;
|
|
|
|
+ vPegFilter: TPegStrFilter;
|
|
|
|
+begin
|
|
|
|
+ vNode := MainBillsTree.FindNode(ABillsID);
|
|
|
|
+ vPeg := GetPegNode(vNode);
|
|
|
|
+ Result.BGLCode := GetBGLCode(vNode);
|
|
|
|
+ Result.PegName := GetFieldStrDef(vPeg, 'Name', '');
|
|
|
|
+ if Result.PegName <> '' then
|
|
|
|
+ begin
|
|
|
|
+ vPegFilter := TPegStrFilter.Create;
|
|
|
|
+ vPegFilter.PegStr := Result.PegName;
|
|
|
|
+ Result.BeginPeg := vPegFilter.BeginPeg;
|
|
|
|
+ Result.EndPeg := vPegFilter.EndPeg;
|
|
|
|
+ vPegFilter.Free;
|
|
|
|
+ end;
|
|
|
|
+ Result.FBFXName := GetFBFXName(vNode, vPeg);
|
|
|
|
+ Result.UnitName := GetFieldStrDef(vNode, 'Name', '');
|
|
|
|
+ Result.DrawingCode := GetDrawingCode(vNode);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetBGLCode(ANode: TsdIDTreeNode): string;
|
|
|
|
+begin
|
|
|
|
+ with TProjectData(TPhaseData(FPhaseData).ProjectData) do
|
|
|
|
+ Result := BillsMeasureData.GatherRelaBGL(ANode);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetPegName(ANode: TsdIDTreeNode): string;
|
|
|
|
+var
|
|
|
|
+ vPeg: TsdIDTreeNode;
|
|
|
|
+begin
|
|
|
|
+ vPeg := GetPegNode(ANode);
|
|
|
|
+ Result := GetFieldStrDef(vPeg, 'Name', '');
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetFieldStrDef(ANode: TsdIDTreeNode; const AFieldName,
|
|
|
|
+ ADef: string): string;
|
|
|
|
+begin
|
|
|
|
+ if Assigned(ANode) then
|
|
|
|
+ Result := ANode.Rec.ValueByName(AFieldName).AsString
|
|
|
|
+ else
|
|
|
|
+ Result := '';
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetPegNode(ANode: TsdIDTreeNode): TsdIDTreeNode;
|
|
|
|
+begin
|
|
|
|
+ Result := nil;
|
|
|
|
+ if not Assigned(ANode) then Exit;
|
|
|
|
+ if CheckPeg(ANode.Rec.ValueByName('Name').AsString) then
|
|
|
|
+ Result := ANode
|
|
|
|
+ else
|
|
|
|
+ Result := GetPegNode(ANode.Parent);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetFBFXName(ANode, APegNode: TsdIDTreeNode): string;
|
|
|
|
+var
|
|
|
|
+ vCurNode: TsdIDTreeNode;
|
|
|
|
+begin
|
|
|
|
+ Result := '';
|
|
|
|
+ if not Assigned(ANode) then Exit;
|
|
|
|
+ // 如果计量单元节点的名称为桩号(转化为判断计量单元节点与桩号节点为同一个)
|
|
|
|
+ if not Assigned(APegNode) or (ANode.ID = APegNode.ID) then
|
|
|
|
+ begin
|
|
|
|
+ // 取树结构的第三、四层节点的名称
|
|
|
|
+ Result := GetNameByLevel(ANode, 2);
|
|
|
|
+ if (Result <> '') and (GetNameByLevel(ANode, 3) <> '') then
|
|
|
|
+ Result := Result + ',';
|
|
|
|
+ Result := Result + GetNameByLevel(ANode, 3);
|
|
|
|
+ end
|
|
|
|
+ // 否则,合并[桩号节点的子节点]至[计量单元节点的父节点]的名称
|
|
|
|
+ else
|
|
|
|
+ begin
|
|
|
|
+ vCurNode := ANode.Parent;
|
|
|
|
+ // 转化为判断层次,层次大于[桩号节点的子节点]的层次
|
|
|
|
+ while vCurNode.Level > APegNode.Level do
|
|
|
|
+ begin
|
|
|
|
+ Result := vCurNode.Rec.ValueByName('Name').AsString + ',' + Result;
|
|
|
|
+ vCurNode := vCurNode.Parent;
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetNameByLevel(ANode: TsdIDTreeNode;
|
|
|
|
+ ALevel: Integer): string;
|
|
|
|
+begin
|
|
|
|
+ Result := '';
|
|
|
|
+ if not Assigned(ANode) then Exit;
|
|
|
|
+ if ANode.Level = ALevel then
|
|
|
|
+ Result := ANode.Rec.ValueByName('Name').AsString
|
|
|
|
+ else if ANode.Level > ALevel then
|
|
|
|
+ Result := GetNameByLevel(ANode.Parent, ALevel);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TZJJLData.SetHistory(const AFieldName, AValue: string;
|
|
|
|
+ AZJJL_Rec: TsdDataRecord);
|
|
|
|
+var
|
|
|
|
+ HistoryRec: TsdDataRecord;
|
|
|
|
+begin
|
|
|
|
+ HistoryRec := sddHistory.FindKey('idxHistory', VarArrayOf([AZJJL_Rec.ValueByName('BillsID').AsInteger,
|
|
|
|
+ AZJJL_Rec.ValueByName('Type').AsInteger, AFieldName]));
|
|
|
|
+
|
|
|
|
+ if not Assigned(HistoryRec) then
|
|
|
|
+ begin
|
|
|
|
+ HistoryRec := sddHistory.Add;
|
|
|
|
+ HistoryRec.ValueByName('ID').AsInteger := GetNewHistoryID;
|
|
|
|
+ HistoryRec.ValueByName('BillsID').AsInteger := AZJJL_Rec.ValueByName('BillsID').AsInteger;
|
|
|
|
+ HistoryRec.ValueByName('Type').AsInteger := AZJJL_Rec.ValueByName('Type').AsInteger;
|
|
|
|
+ HistoryRec.ValueByName('FieldName').AsString := AFieldName;
|
|
|
|
+ end;
|
|
|
|
+ HistoryRec.ValueByName('FieldValue').AsString := AValue;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TZJJLData.GetNewHistoryID: Integer;
|
|
|
|
+var
|
|
|
|
+ idx: TsdIndex;
|
|
|
|
+begin
|
|
|
|
+ idx := sddHistory.FindIndex('idxID');
|
|
|
|
+ if idx.RecordCount = 0 then
|
|
|
|
+ Result := 1
|
|
|
|
+ else
|
|
|
|
+ Result := idx.Records[idx.RecordCount - 1].ValueByName('ID').AsInteger + 1;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TZJJLData.sdvZJJLBeforeValueChange(AValue: TsdValue;
|
|
|
|
+ const NewValue: Variant; var Allow: Boolean);
|
|
|
|
+
|
|
|
|
+ function CheckFieldNeedHistory(const AFieldName: string): Boolean;
|
|
|
|
+ begin
|
|
|
|
+ Result := SameText(AFieldName, 'Code') or
|
|
|
|
+ SameText(AFieldName, 'CertificateCode') or
|
|
|
|
+ SameText(AFieldName, 'BGLCode') or
|
|
|
|
+ SameText(AFieldName, 'PegName') or
|
|
|
|
+ SameText(AFieldName, 'BeginPeg') or
|
|
|
|
+ SameText(AFieldName, 'EndPeg') or
|
|
|
|
+ SameText(AFieldName, 'FBFXName') or
|
|
|
|
+ SameText(AFieldName, 'UnitName') or
|
|
|
|
+ SameText(AFieldName, 'DrawingCode') or
|
|
|
|
+ SameText(AFieldName, 'FormulaMemo') or
|
|
|
|
+ SameText(AFieldName, 'RelaFile');
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+var
|
|
|
|
+ sNewValue: string;
|
|
|
|
+begin
|
|
|
|
+ if CheckFieldNeedHistory(AValue.FieldName) then
|
|
|
|
+ begin
|
|
|
|
+ sNewValue := VarToStrDef(NewValue, '');
|
|
|
|
+ if sNewValue <> AValue.AsString then
|
|
|
|
+ SetHistory(AValue.FieldName, sNewValue, AValue.Owner);
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|
|
end.
|