Browse Source

Bills Measure: Locate Zjjl

MaiXinRong 8 years ago
parent
commit
8a84f2b535

+ 56 - 1
DataModules/BillsMeasureDm.pas

@@ -6,7 +6,9 @@ uses
   BillsDm, BillsTree, FormulaCalc, sdIDTree, StageDm,
   BillsDm, BillsTree, FormulaCalc, sdIDTree, StageDm,
   SysUtils, Classes, sdDB, DB;
   SysUtils, Classes, sdDB, DB;
 
 
-type
+type 
+  TLocateZJJLEvent = procedure (ABillsID: Integer) of object;
+
   TBillsMeasureData = class(TDataModule)
   TBillsMeasureData = class(TDataModule)
     sdvBillsMeasure: TsdDataView;
     sdvBillsMeasure: TsdDataView;
     procedure sdvBillsMeasureAfterOpen(Sender: TObject);
     procedure sdvBillsMeasureAfterOpen(Sender: TObject);
@@ -64,6 +66,8 @@ type
 
 
     function GatherRelaBGL(ANode: TsdIDTreeNode): string;
     function GatherRelaBGL(ANode: TsdIDTreeNode): string;
 
 
+    function FindNodeWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;
+
     // 计算 修改各期原报审核数据时,需对累计数据做增量
     // 计算 修改各期原报审核数据时,需对累计数据做增量
     procedure UpdateRecordDeal(ABillsID: Integer; AQuantity, ATotalPrice: Double);
     procedure UpdateRecordDeal(ABillsID: Integer; AQuantity, ATotalPrice: Double);
     procedure UpdateRecordQc(ABillsID: Integer; AQuantity, ATotalPrice: Double);
     procedure UpdateRecordQc(ABillsID: Integer; AQuantity, ATotalPrice: Double);
@@ -1030,4 +1034,55 @@ begin
   end;
   end;
 end;
 end;
 
 
+function TBillsMeasureData.FindNodeWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;
+
+  function CheckNodeHasZJJL(ANode: TsdIDTreeNode): Boolean;
+  begin
+    Result := Assigned(TProjectData(FProjectData).PhaseData.ZJJLData.sddZJJL.Locate('BillsID', ANode.ID));
+  end;
+
+  function FindChildWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;
+  var
+    iChild: Integer;
+    vChild: TsdIDTreeNode;
+  begin
+    Result := nil;
+    for iChild := 0 to ANode.ChildCount - 1 do
+    begin
+      vChild := ANode.ChildNodes[iChild];
+      if CheckNodeHasZJJL(vChild) then
+        Result := vChild
+      else if vChild.HasChildren then
+        Result := FindChildWithZJJL(vChild);
+
+      if Assigned(Result) then
+        Break;
+    end;
+  end;
+
+  function FindParentWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;
+  var
+    vParent: TsdIDTreeNode;
+  begin
+    Result := nil;
+    vParent := ANode.Parent;
+    while Assigned(vParent) and not Assigned(Result) do
+    begin
+      if CheckNodeHasZJJL(vParent) then
+        Result := vParent;
+      vParent := vParent.Parent;
+    end;
+  end;
+
+begin
+  if not CheckNodeHasZJJL(ANode) then
+  begin
+    Result := FindChildWithZJJL(ANode);
+    if not Assigned(Result) then
+      Result := FindParentWithZJJL(ANode);
+  end
+  else
+    Result := ANode;
+end;
+
 end.
 end.

+ 18 - 12
Forms/MainFrm.dfm

@@ -21,7 +21,7 @@ object MainForm: TMainForm
   object jtsProjects: TJimTabSet
   object jtsProjects: TJimTabSet
     Left = 0
     Left = 0
     Top = 49
     Top = 49
-    Width = 734
+    Width = 742
     Height = 21
     Height = 21
     Align = alTop
     Align = alTop
     BackgroundColor = clGradientInactiveCaption
     BackgroundColor = clGradientInactiveCaption
@@ -45,8 +45,8 @@ object MainForm: TMainForm
   end
   end
   object dxStatusBar: TdxStatusBar
   object dxStatusBar: TdxStatusBar
     Left = 0
     Left = 0
-    Top = 480
-    Width = 734
+    Top = 487
+    Width = 742
     Height = 20
     Height = 20
     Panels = <
     Panels = <
       item
       item
@@ -78,12 +78,12 @@ object MainForm: TMainForm
     object dxStatusBarContainer2: TdxStatusBarContainerControl
     object dxStatusBarContainer2: TdxStatusBarContainerControl
       Left = 604
       Left = 604
       Top = 2
       Top = 2
-      Width = 128
+      Width = 136
       Height = 16
       Height = 16
       object ProgressBar: TProgressBar
       object ProgressBar: TProgressBar
         Left = 0
         Left = 0
         Top = 0
         Top = 0
-        Width = 128
+        Width = 136
         Height = 16
         Height = 16
         Align = alClient
         Align = alClient
         Max = 200
         Max = 200
@@ -94,8 +94,8 @@ object MainForm: TMainForm
   object jpsMain: TJimPages
   object jpsMain: TJimPages
     Left = 0
     Left = 0
     Top = 70
     Top = 70
-    Width = 734
-    Height = 410
+    Width = 742
+    Height = 417
     ActivePage = jpsMainProjectsManager
     ActivePage = jpsMainProjectsManager
     ActivePageIndex = 0
     ActivePageIndex = 0
     Align = alClient
     Align = alClient
@@ -103,8 +103,8 @@ object MainForm: TMainForm
     object jpsMainProjectsManager: TJimPage
     object jpsMainProjectsManager: TJimPage
       Left = 0
       Left = 0
       Top = 0
       Top = 0
-      Width = 734
-      Height = 410
+      Width = 742
+      Height = 417
       TabName = 'ProjectsManager'
       TabName = 'ProjectsManager'
       Caption = 'ProjsMgr'
       Caption = 'ProjsMgr'
       object pnlUser: TPanel
       object pnlUser: TPanel
@@ -201,8 +201,8 @@ object MainForm: TMainForm
     object jpsMainProjects: TJimPage
     object jpsMainProjects: TJimPage
       Left = 0
       Left = 0
       Top = 0
       Top = 0
-      Width = 734
-      Height = 410
+      Width = 742
+      Height = 417
       TabName = 'Projects'
       TabName = 'Projects'
       Caption = 'Projects'
       Caption = 'Projects'
       object jpsProjects: TJimPages
       object jpsProjects: TJimPages
@@ -220,7 +220,7 @@ object MainForm: TMainForm
     Font.Charset = DEFAULT_CHARSET
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clWindowText
     Font.Color = clWindowText
     Font.Height = -12
     Font.Height = -12
-    Font.Name = #24494#36719#38597#40657
+    Font.Name = 'Microsoft YaHei UI'
     Font.Style = []
     Font.Style = []
     Bars = <
     Bars = <
       item
       item
@@ -1107,6 +1107,12 @@ object MainForm: TMainForm
       Hint = #28155#21152#20851#27880#20154
       Hint = #28155#21152#20851#27880#20154
       Visible = ivAlways
       Visible = ivAlways
     end
     end
+    object dxbtnLocateZJJL: TdxBarButton
+      Caption = #23450#20301#33267#20013#38388#35745#37327
+      Category = 0
+      Hint = #23450#20301#33267#20013#38388#35745#37327
+      Visible = ivAlways
+    end
   end
   end
   object Images: TImageList
   object Images: TImageList
     DrawingStyle = dsTransparent
     DrawingStyle = dsTransparent

+ 1 - 0
Forms/MainFrm.pas

@@ -165,6 +165,7 @@ type
     dxbtnHelpCenter: TdxBarButton;
     dxbtnHelpCenter: TdxBarButton;
     dxbtnLocateMeasureBills: TdxBarButton;
     dxbtnLocateMeasureBills: TdxBarButton;
     dxbtnGuest: TdxBarButton;
     dxbtnGuest: TdxBarButton;
+    dxbtnLocateZJJL: TdxBarButton;
     procedure FormCreate(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure jtsProjectsChange(Sender: TObject; NewTab: Integer;
     procedure jtsProjectsChange(Sender: TObject; NewTab: Integer;

+ 10 - 0
Frames/BillsMeasureFme.dfm

@@ -1073,6 +1073,11 @@ object BillsMeasureFrame: TBillsMeasureFrame
       end
       end
       item
       item
         BeginGroup = True
         BeginGroup = True
+        Item = MainForm.dxbtnLocateZJJL
+        Visible = True
+      end
+      item
+        BeginGroup = True
         Item = MainForm.dxbtnExportGridToExcel
         Item = MainForm.dxbtnExportGridToExcel
         Visible = True
         Visible = True
       end>
       end>
@@ -1109,6 +1114,11 @@ object BillsMeasureFrame: TBillsMeasureFrame
       Caption = #21462#28040#38544#34255
       Caption = #21462#28040#38544#34255
       OnExecute = actnCancelHiddenColExecute
       OnExecute = actnCancelHiddenColExecute
     end
     end
+    object actnLocateZJJL: TAction
+      Caption = #23450#20301#33267#20013#38388#35745#37327
+      OnExecute = actnLocateZJJLExecute
+      OnUpdate = actnLocateZJJLUpdate
+    end
   end
   end
   object dxpmBillsCol: TdxBarPopupMenu
   object dxpmBillsCol: TdxBarPopupMenu
     BarManager = MainForm.dxBarManager
     BarManager = MainForm.dxBarManager

+ 25 - 0
Frames/BillsMeasureFme.pas

@@ -28,6 +28,7 @@ type
     dxpmBillsCol: TdxBarPopupMenu;
     dxpmBillsCol: TdxBarPopupMenu;
     actnHiddenCol: TAction;
     actnHiddenCol: TAction;
     actnCancelHiddenCol: TAction;
     actnCancelHiddenCol: TAction;
+    actnLocateZJJL: TAction;
     procedure dxpmBillsPopup(Sender: TObject);
     procedure dxpmBillsPopup(Sender: TObject);
     procedure zgBillsMeasureMouseDown(Sender: TObject; Button: TMouseButton;
     procedure zgBillsMeasureMouseDown(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
       Shift: TShiftState; X, Y: Integer);
@@ -57,6 +58,8 @@ type
     procedure dxpmBillsColPopup(Sender: TObject);
     procedure dxpmBillsColPopup(Sender: TObject);
     procedure actnHiddenColExecute(Sender: TObject);
     procedure actnHiddenColExecute(Sender: TObject);
     procedure actnCancelHiddenColExecute(Sender: TObject);
     procedure actnCancelHiddenColExecute(Sender: TObject);
+    procedure actnLocateZJJLExecute(Sender: TObject);
+    procedure actnLocateZJJLUpdate(Sender: TObject);
   private
   private
     FBillsMeasureData: TBillsMeasureData;
     FBillsMeasureData: TBillsMeasureData;
     FShowPriceChange: Boolean;
     FShowPriceChange: Boolean;
@@ -68,6 +71,7 @@ type
     FShowAlias: Boolean;
     FShowAlias: Boolean;
 
 
     FColVisibleManager: TBM_ColVisibleManager;
     FColVisibleManager: TBM_ColVisibleManager;
+    FOnLocateZJJL: TLocateZJJLEvent;
 
 
     procedure ExpandMouseDown(AGridCell: TzjCell);
     procedure ExpandMouseDown(AGridCell: TzjCell);
 
 
@@ -110,6 +114,7 @@ type
     property ShowAlias: Boolean read FShowAlias write SetShowAlias;
     property ShowAlias: Boolean read FShowAlias write SetShowAlias;
 
 
     property OnAfterSetBookmark: TBookmarkRefreshEvent read FOnAfterSetBookmark write FOnAfterSetBookmark;
     property OnAfterSetBookmark: TBookmarkRefreshEvent read FOnAfterSetBookmark write FOnAfterSetBookmark;
+    property OnLocateZJJL: TLocateZJJLEvent read FOnLocateZJJL write FOnLocateZJJL;
     property BillsMeasureData: TBillsMeasureData read FBillsMeasureData;
     property BillsMeasureData: TBillsMeasureData read FBillsMeasureData;
   end;
   end;
 
 
@@ -145,6 +150,7 @@ begin
   SetDxBtnAction(actnCalculateAll, MainForm.dxbtnCalculateAll);
   SetDxBtnAction(actnCalculateAll, MainForm.dxbtnCalculateAll);
   SetDxBtnAction(actnExportGridToExcel, MainForm.dxbtnExportGridToExcel);
   SetDxBtnAction(actnExportGridToExcel, MainForm.dxbtnExportGridToExcel);
   SetDxBtnAction(actnSetStageBookmark, MainForm.dxbtnSetBookmark);
   SetDxBtnAction(actnSetStageBookmark, MainForm.dxbtnSetBookmark);
+  SetDxBtnAction(actnLocateZJJL, MainForm.dxbtnLocateZJJL);
 end;
 end;
 
 
 procedure TBillsMeasureFrame.zgBillsMeasureMouseDown(Sender: TObject;
 procedure TBillsMeasureFrame.zgBillsMeasureMouseDown(Sender: TObject;
@@ -754,4 +760,23 @@ begin
   Result := (iCol = stdBillsMeasure.VisibleCol('MemoStr'));
   Result := (iCol = stdBillsMeasure.VisibleCol('MemoStr'));
 end;
 end;
 
 
+procedure TBillsMeasureFrame.actnLocateZJJLExecute(Sender: TObject);
+var
+  vNode: TsdIDTreeNode;
+begin
+  vNode := FBillsMeasureData.FindNodeWithZJJL(FBillsMeasureData.BillsMeasureTree.Selected);
+  if Assigned(vNode) then
+  begin
+    if Assigned(OnLocateZJJL) then
+      FOnLocateZJJL(vNode.ID);
+  end
+  else
+    WarningMessage('该节点及相关节点,均无中间计量数据');
+end;
+
+procedure TBillsMeasureFrame.actnLocateZJJLUpdate(Sender: TObject);
+begin
+  TAction(Sender).Enabled := TProjectData(FBillsMeasureData.ProjectData).PhaseData.Active;
+end;
+
 end.
 end.

+ 15 - 0
Frames/ProjectFme.pas

@@ -184,6 +184,7 @@ type
     function CheckFileAndCloudChekerList: Boolean;
     function CheckFileAndCloudChekerList: Boolean;
 
 
     procedure LocateMeasureBills(AID: Integer);
     procedure LocateMeasureBills(AID: Integer);
+    procedure LocateZJJL(ABillsID: Integer);
 
 
     property ProjectData: TProjectData read FProjectData;
     property ProjectData: TProjectData read FProjectData;
 
 
@@ -642,6 +643,7 @@ begin
 
 
   FBillsMeasureFrame := TBillsMeasureFrame.Create(Self, FProjectData.BillsMeasureData);
   FBillsMeasureFrame := TBillsMeasureFrame.Create(Self, FProjectData.BillsMeasureData);
   FBillsMeasureFrame.OnAfterSetBookmark := ExpandBookmarkFrame;
   FBillsMeasureFrame.OnAfterSetBookmark := ExpandBookmarkFrame;
+  FBillsMeasureFrame.OnLocateZJJL := LocateZJJL;
   FBillsMeasureFrame.ShowPriceChange := FProjectData.ProjProperties.ShowPriceChange;
   FBillsMeasureFrame.ShowPriceChange := FProjectData.ProjProperties.ShowPriceChange;
   FBillsMeasureFrame.ShowBGLCode := FProjectData.ProjProperties.ShowBGLCode;
   FBillsMeasureFrame.ShowBGLCode := FProjectData.ProjProperties.ShowBGLCode;
   FBillsMeasureFrame.ShowDesignQuantity := FProjectData.ProjProperties.ShowDesignQuantity;
   FBillsMeasureFrame.ShowDesignQuantity := FProjectData.ProjProperties.ShowDesignQuantity;
@@ -1606,4 +1608,17 @@ begin
     jpsMain.ActivePage.Tag := -1;
     jpsMain.ActivePage.Tag := -1;
 end;
 end;
 
 
+procedure TProjectFrame.LocateZJJL(ABillsID: Integer);
+var
+  Rec: TsdDataRecord;
+begin
+  if not tobtnZJJL.Down then
+  begin
+    tobtnZJJL.Down := True;
+    tobtnZJJL.Click;
+  end;
+  Rec := FProjectData.PhaseData.ZJJLData.sddZJJL.Locate('BillsID', ABillsID);
+  FProjectData.PhaseData.ZJJLData.sdvZJJL.LocateInControl(Rec);
+end;
+
 end.
 end.