| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569 | 
							- unit ZJJLDm;
 
- interface
 
- uses
 
-   ZjGrid,
 
-   SysUtils, Classes, DB, DBClient, ADODB, sdIDTree, sdDB, Provider,
 
-   Windows, BillsTree;
 
- type
 
-   TZJJLType = (ztFx, ztGcl);
 
-   TZJJLNode = class
 
-   private
 
-     FBillsID: Integer;
 
-     FCode: string;
 
-     FCertificateCode: string;
 
-     FBillsCode: string;
 
-     FFormulaMemo: string;
 
-     FRelaFile: string;
 
-     FType: Integer;
 
-   end;
 
-   TZJJLInfoRec = Record
 
-     FBFXName: string;
 
-     PegName: string;
 
-     BGLCode: string;
 
-     DrawingCode: string;
 
-     UnitName: string;
 
-   end;
 
-   TZJJLData = class(TDataModule)
 
-     atZJJL: TADOTable;
 
-     dspZJJL: TDataSetProvider;
 
-     cdsZJJL: TClientDataSet;
 
-     cdsZJJLID: TIntegerField;
 
-     cdsZJJLBillsID: TIntegerField;
 
-     cdsZJJLCode: TWideStringField;
 
-     cdsZJJLCertificateCode: TWideStringField;
 
-     cdsZJJLBillsCode: TWideStringField;
 
-     cdsZJJLFormulaMemo: TMemoField;
 
-     cdsZJJLRelaFile: TWideStringField;
 
-     cdsZJJLType: TIntegerField;
 
-     cdsZJJLView: TClientDataSet;
 
-     cdsZJJLViewID: TIntegerField;
 
-     cdsZJJLViewBillsID: TIntegerField;
 
-     cdsZJJLViewCode: TWideStringField;
 
-     cdsZJJLViewCertificateCode: TWideStringField;
 
-     cdsZJJLViewBillsCode: TWideStringField;
 
-     cdsZJJLViewFormulaMemo: TMemoField;
 
-     cdsZJJLViewRelaFile: TWideStringField;
 
-     cdsZJJLViewType: TIntegerField;
 
-     procedure cdsZJJLViewAfterScroll(DataSet: TDataSet);
 
-   private
 
-     FPhaseData: TObject;
 
-     FCanModified: Boolean;
 
-     FNewID: Integer;
 
-     FOrgDataList: TList;
 
-     FDetailGrid: TZJGrid;
 
-     procedure GenerateZJJLNode(ANode: TsdIDTreeNode; AType: Integer);
 
-     function CheckLastXmj(AID: Integer): Boolean;
 
-     function CheckBGExist(ANode: TsdIDTreeNode): Boolean;
 
-     function CheckMeasureExist(ANode: TsdIDTreeNode): Boolean;
 
-     procedure GenerateLastXmj(ANode: TsdIDTreeNode);
 
-     procedure GenerateNode(ANode: TsdIDTreeNode);
 
-     procedure GenerateLeafNode(ANode: TsdIDTreeNode);
 
-     procedure GenerateNodeByB_Code(ANode: TsdIDTreeNode);
 
-     procedure DeleteAll;
 
-     procedure RestoreOrgData;
 
-     procedure DetailGridCellCanEdit(Sender: TObject; const ACoord: TPoint;
 
-       var Allow: Boolean);
 
-     procedure DetailGridCellTextChanged(Sender: TObject; Col, Row: Integer);
 
-     // 向父项检测,直至提取到图册号为止
 
-     function GetDrawingCode(ANode: TsdIDTreeNode): string;
 
-     function GetMainBillsTree: TsdIDTree;
 
-   public
 
-     constructor Create(APhaseData: TObject);
 
-     destructor Destroy; override;
 
-     procedure Open(AConnection: TADOConnection);
 
-     procedure Save;
 
-     procedure GenerateAll;
 
-     procedure GenerateAllByB_Code;
 
-     procedure AssignedCurData;
 
-     function GetInfoRecByCode(ABillsID: Integer): TZJJLInfoRec;
 
-     function GetInfoRecByB_Code(ABillsID: Integer): TZJJLInfoRec;
 
-     function GetInfoRec(ABillsID, AType: Integer): TZJJLInfoRec;
 
-     procedure LocateBills;
 
-     property PhaseData: TObject read FPhaseData;
 
-     property MainBillsTree: TsdIDTree read GetMainBillsTree;
 
-     property CanModified: Boolean read FCanModified write FCanModified;
 
-     property DetailGrid: TZJGrid read FDetailGrid;
 
-   end;
 
- implementation
 
- uses
 
-   PhaseData, ProjectData, BillsDm, UtilMethods, ProjectProperty, ZhAPI,
 
-   BillsCompileDm, BillsMeasureDm;
 
- {$R *.dfm}
 
- { TZJJLData }
 
- constructor TZJJLData.Create(APhaseData: TObject);
 
- begin
 
-   inherited Create(nil);
 
-   FPhaseData := APhaseData;
 
-   FOrgDataList := TList.Create;
 
-   FDetailGrid := TZJGrid.Create(nil);
 
-   FDetailGrid.Options := FDetailGrid.Options + [goWarpText];
 
-   FDetailGrid.OnCellCanEdit := DetailGridCellCanEdit;
 
-   FDetailGrid.OnCellTextChanged := DetailGridCellTextChanged;
 
- end;
 
- destructor TZJJLData.Destroy;
 
- begin
 
-   FDetailGrid.Free;
 
-   ClearObjects(FOrgDataList);
 
-   FOrgDataList.Free;
 
-   inherited;
 
- end;
 
- function TZJJLData.GetMainBillsTree: TsdIDTree;
 
- begin
 
-   with TProjectData(TPhaseData(FPhaseData).ProjectData) do
 
-     Result := BillsMeasureData.BillsMeasureTree;
 
- end;
 
- procedure TZJJLData.Open(AConnection: TADOConnection);
 
- begin
 
-   atZJJL.Connection := AConnection;
 
-   cdsZJJL.Open;
 
-   cdsZJJL.IndexFieldNames := 'ID';
 
-   cdsZJJLView.CloneCursor(cdsZJJL, True);
 
-   cdsZJJLView.IndexFieldNames := 'ID';
 
- end;
 
- procedure TZJJLData.Save;
 
- begin
 
-   cdsZJJL.ApplyUpdates(0);
 
- end;
 
- function TZJJLData.CheckLastXmj(AID: Integer): Boolean;
 
- var
 
-   stnNode, stnChild: TsdIDTreeNode;
 
- begin
 
-   stnNode := MainBillsTree.FindNode(AID);
 
-   Result := stnNode.Rec.ValueByName('Code').AsString <> '';
 
-   if not stnNode.HasChildren or not Result then Exit;
 
-   stnChild := stnNode.FirstChild;
 
-   Result := stnChild.Rec.ValueByName('B_Code').AsString <> '';
 
- end;
 
- procedure TZJJLData.AssignedCurData;
 
- var
 
-   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 := '变更令号:' + InfoRec.BGLCode;
 
-   FDetailGrid.Cells[0, 1].Text := '桩号或部位:' + InfoRec.PegName;
 
-   FDetailGrid.Cells[0, 2].Text := '分部分项工程:' + InfoRec.FBFXName;
 
-   FDetailGrid.Cells[0, 3].Text := '计量单元:' + InfoRec.UnitName;
 
-   FDetailGrid.Cells[0, 4].Text := '图号:' + InfoRec.DrawingCode;
 
-   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;
 
- end;
 
- procedure TZJJLData.GenerateAll;
 
- begin
 
-   RestoreOrgData;
 
-   FNewID := 1;
 
-   DeleteAll;
 
-   GenerateNode(MainBillsTree.FirstNode);
 
- end;
 
- procedure TZJJLData.GenerateNode(ANode: TsdIDTreeNode);
 
- begin
 
-   if not Assigned(ANode) then Exit;
 
-   if CheckLastXmj(ANode.ID) then
 
-     GenerateLastXmj(ANode)
 
-   else
 
-     GenerateNode(ANode.FirstChild);
 
-   GenerateNode(ANode.NextSibling);
 
- end;
 
- procedure TZJJLData.GenerateLastXmj(ANode: TsdIDTreeNode);
 
- begin
 
-   if CheckMeasureExist(ANode) then
 
-     GenerateZJJLNode(ANode, 0);
 
- end;
 
- function TZJJLData.CheckBGExist(ANode: TsdIDTreeNode): Boolean;
 
-   function CheckBGLExist(AID: Integer): Boolean;
 
-   var
 
-     StageRec: TsdDataRecord;
 
-   begin
 
-     StageRec := TPhaseData(FPhaseData).StageData.StageRecord(AID);
 
-     Result := Assigned(StageRec) and
 
-            ((StageRec.ValueByName('QcBGLCode').AsString <> '')
 
-            or (StageRec.ValueByName('PcBGLCode').AsString <> ''));
 
-   end;
 
- var
 
-   iChild: Integer;
 
- begin
 
-   Result := False;
 
-   if not Assigned(ANode) then Exit;
 
-   if ANode.HasChildren then
 
-   begin
 
-     for iChild := 0 to ANode.ChildCount - 1 do
 
-     begin
 
-       Result := Result or CheckBGExist(ANode.ChildNodes[iChild]);
 
-       if Result then Break;
 
-     end;
 
-   end
 
-   else
 
-     Result := CheckBGLExist(ANode.ID);
 
- end;
 
- procedure TZJJLData.DeleteAll;
 
- begin
 
-   cdsZJJL.First;
 
-   while not cdsZJJL.Eof do
 
-     cdsZJJL.Delete;
 
- end;
 
- procedure TZJJLData.RestoreOrgData;
 
-   function CreateNodeData: TZJJLNode;
 
-   begin
 
-     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;
 
-   end;
 
- begin
 
-   FOrgDataList.Clear;
 
-   cdsZJJL.First;
 
-   while not cdsZJJL.Eof do
 
-   begin
 
-     FOrgDataList.Add(CreateNodeData);
 
-     cdsZJJL.Next;
 
-   end;
 
- end;
 
- function TZJJLData.CheckMeasureExist(ANode: TsdIDTreeNode): Boolean;
 
-   function CheckStageCompleteData(AID: Integer): Boolean;
 
-   var
 
-     StageRec: TsdDataRecord;
 
-   begin
 
-     StageRec := TPhaseData(FPhaseData).StageData.StageRecord(AID);
 
-     Result := Assigned(StageRec) and
 
-            ((StageRec.ValueByName('GatherQuantity').AsFloat <> 0)
 
-            or (StageRec.ValueByName('GatherTotalPrice').AsFloat <> 0));
 
-   end;
 
- var
 
-   iChild: Integer;
 
- begin
 
-   Result := False;
 
-   if not Assigned(ANode) then Exit;
 
-   if ANode.HasChildren then
 
-   begin
 
-     for iChild := 0 to ANode.ChildCount - 1 do
 
-     begin
 
-       Result := Result or CheckMeasureExist(ANode.ChildNodes[iChild]);
 
-       if Result then Break;
 
-     end;
 
-   end
 
-   else
 
-     Result := CheckStageCompleteData(ANode.ID);
 
- end;
 
- procedure TZJJLData.cdsZJJLViewAfterScroll(DataSet: TDataSet);
 
- begin
 
-   AssignedCurData;
 
- end;
 
- procedure TZJJLData.DetailGridCellCanEdit(Sender: TObject;
 
-   const ACoord: TPoint; var Allow: Boolean);
 
- begin
 
-   Allow := ((ACoord.Y = 6) or (ACoord.Y = 8)) and
 
-       not TPhaseData(FPhaseData).StageDataReadOnly;
 
- end;
 
- 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
 
-   vPeg, vNode: TsdIDTreeNode;
 
- begin
 
-   vNode := MainBillsTree.FindNode(ABillsID);
 
-   vPeg := GetPegNode(vNode);
 
-   Result.BGLCode := GetBGLCode(vNode);
 
-   Result.PegName := GetPegName(vPeg);
 
-   Result.FBFXName := GetFBFXName(vNode, vPeg);
 
-   Result.UnitName := GetFieldStrDef(vNode, 'Name', '');
 
-   Result.DrawingCode := GetDrawingCode(vNode);
 
- end;
 
- procedure TZJJLData.DetailGridCellTextChanged(Sender: TObject; Col,
 
-   Row: Integer);
 
- 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;
 
- end;
 
- procedure TZJJLData.GenerateAllByB_Code;
 
- begin
 
-   RestoreOrgData;
 
-   FNewID := 1;
 
-   DeleteAll;
 
-   GenerateNodeByB_Code(MainBillsTree.FirstNode);
 
- end;
 
- procedure TZJJLData.GenerateNodeByB_Code(ANode: TsdIDTreeNode);
 
- begin
 
-   if not Assigned(ANode) then Exit;
 
-   if ANode.HasChildren then
 
-     GenerateNodeByB_Code(ANode.FirstChild)
 
-   else
 
-     GenerateLeafNode(ANode);
 
-   GenerateNodeByB_Code(ANode.NextSibling);
 
- end;
 
- procedure TZJJLData.GenerateLeafNode(ANode: TsdIDTreeNode);
 
-   function CheckMeasureExist(AID: Integer): Boolean;
 
-   var
 
-     StageRec: TsdDataRecord;
 
-   begin
 
-     StageRec := TPhaseData(FPhaseData).StageData.StageRecord(AID);
 
-     Result := Assigned(StageRec) and
 
-            ((StageRec.ValueByName('GatherQuantity').AsFloat <> 0)
 
-            or (StageRec.ValueByName('GatherTotalPrice').AsFloat <> 0));
 
-   end;
 
- begin
 
-   if (ANode.Rec.ValueByName('B_Code').AsString <> '') and
 
-       CheckMeasureExist(ANode.ID) then
 
-     GenerateZJJLNode(ANode, 1);
 
- end;
 
- procedure TZJJLData.GenerateZJJLNode(ANode: TsdIDTreeNode;
 
-   AType: Integer);
 
-   function GetNewCode: string;
 
-   begin
 
-     with TProjectData(TPhaseData(FPhaseData).ProjectData) do
 
-     begin
 
-       Result := ProjProperties.ZJJLPreText;
 
-       if (Result <> '') and (Result[Length(Result)] <> '-') then
 
-         Result := Result + '-';
 
-       Result := Result + Format('%d-%d', [PhaseIndex, FNewID]);
 
-     end;
 
-   end;
 
-   function GetOrgZJJLNode(ABillsID: Integer): TZJJLNode;
 
-   var
 
-     iIndex: Integer;
 
-   begin
 
-     Result := nil;
 
-     for iIndex := 0 to FOrgDataList.Count - 1 do
 
-       // 7/30新增了一个“总量控制”模式,Type字段控制。真的是要疯掉了。
 
-       if (TZJJLNode(FOrgDataList.Items[iIndex]).FBillsID = ABillsID)
 
-           and (TZJJLNode(FOrgDataList.Items[iIndex]).FType = AType) then
 
-       begin
 
-         Result := TZJJLNode(FOrgDataList.Items[iIndex]);
 
-         Break;
 
-       end;
 
-   end;
 
- var
 
-   ZJJLNode: TZJJLNode;
 
- begin
 
-   cdsZJJL.Append;
 
-   cdsZJJLID.AsInteger := FNewID;
 
-   cdsZJJLBillsID.AsInteger := ANode.ID;
 
-   cdsZJJLType.AsInteger := AType;
 
-   ZJJLNode := GetOrgZJJLNode(ANode.ID);
 
-   if not Assigned(ZJJLNode) then
 
-   begin
 
-     cdsZJJLCode.AsString := GetNewCode;
 
-     if AType = Ord(ztFx) then
 
-       cdsZJJLBillsCode.AsString := ANode.Rec.ValueByName('Code').AsString
 
-     else if AType = Ord(ztGcl) then
 
-       cdsZJJLBillsCode.AsString := ANode.Rec.ValueByName('B_Code').AsString;
 
-   end
 
-   else
 
-   begin
 
-     cdsZJJLCode.AsString := GetNewCode;
 
-     cdsZJJLCertificateCode.AsString := ZJJLNode.FCertificateCode;
 
-     cdsZJJLFormulaMemo.AsString := ZJJLNode.FFormulaMemo;
 
-     cdsZJJLRelaFile.AsString := ZJJLNode.FRelaFile;
 
-   end;
 
-   cdsZJJL.Post;
 
-   Inc(FNewID);
 
- end;
 
- 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
 
-   vNode: TsdIDTreeNode;
 
- begin
 
-   vNode := MainBillsTree.FindNode(ABillsID);
 
-   Result.BGLCode := GetBGLCode(vNode);
 
-   if Assigned(vNode.Parent) then
 
-     Result.PegName := vNode.Parent.Rec.ValueByName('Name').AsString;
 
-   Result.FBFXName := '';
 
-   Result.UnitName := vNode.Rec.ValueByName('Name').AsString;
 
-   Result.DrawingCode := GetDrawingCode(vNode);
 
- end;
 
- function TZJJLData.GetInfoRec(ABillsID, AType: Integer): TZJJLInfoRec;
 
- begin
 
-   if AType = 0 then
 
-     Result := GetInfoRecByCode(ABillsID)
 
-   else if AType = 1 then
 
-     Result := GetInfoRecByB_Code(ABillsID);
 
- end;
 
- procedure TZJJLData.LocateBills;
 
- var
 
-   Rec: TsdDataRecord;
 
- begin
 
-   with TProjectData(TPhaseData(FPhaseData).ProjectData) do
 
-   begin
 
-     Rec := BillsData.sddBills.FindKey('idxID', cdsZJJLViewBillsID.AsInteger);
 
-     BillsMeasureData.sdvBillsMeasure.LocateInControl(Rec);
 
-   end;
 
- end;
 
- function TZJJLData.GetDrawingCode(ANode: TsdIDTreeNode): string;
 
- var
 
-   vNode: TBillsIDTreeNode;
 
- begin
 
-   Result := '';
 
-   vNode := TBillsIDTreeNode(ANode);
 
-   while (Result = '') and Assigned(vNode) do
 
-   begin
 
-     if Assigned(vNode.Rec) then
 
-       Result := vNode.Rec.DrawingCode.AsString;
 
-     vNode := TBillsIDTreeNode(vNode.Parent);
 
-   end;
 
- end;
 
- end.
 
 
  |