فهرست منبع

优化CalcMeasureFilter方法

MaiXinRong 6 سال پیش
والد
کامیت
ed8ce1d9d7
2فایلهای تغییر یافته به همراه9 افزوده شده و 17 حذف شده
  1. 8 16
      DataModules/BillsMeasureDm.pas
  2. 1 1
      Units/ProjectData.pas

+ 8 - 16
DataModules/BillsMeasureDm.pas

@@ -72,7 +72,7 @@ type
 
     function FindNodeWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;
 
-    procedure CalcMeasureFilter(ANode: TsdIDTreeNode);
+    procedure CalcMeasureFilter;
 
     // 计算 修改各期原报审核数据时,需对累计数据做增量
     procedure UpdateRecordDeal(ABillsID: Integer; AQuantity, ATotalPrice: Double);
@@ -1245,25 +1245,17 @@ begin
   Result := TProjectData(FProjectData).ProjProperties.DecimalManager.Common;
 end;
 
-procedure TBillsMeasureData.CalcMeasureFilter(ANode: TsdIDTreeNode);
+procedure TBillsMeasureData.CalcMeasureFilter;
 var
   i: Integer;
   vNode: TMeasureBillsIDTreeNode;
-  b: Boolean;
 begin
-  if not Assigned(ANode) then Exit;
-
-  for i := 0 to ANode.ChildCount - 1 do
-    CalcMeasureFilter(ANode.ChildNodes[i]);
-
-  vNode := TMeasureBillsIDTreeNode(ANode);
-  b := vNode.Rec.HisHasMeasure.AsBoolean or vNode.Rec.CurHasMeasure.AsBoolean;
-  if vNode.Rec.HisHasMeasure.AsBoolean <> b then
-    vNode.Rec.HisHasMeasure.AsBoolean := b;
-  if vNode.Rec.CurHasMeasure.AsBoolean <> False then
-    vNode.Rec.CurHasMeasure.AsBoolean := False;
-
-  CalcMeasureFilter(ANode.NextSibling);
+  for i := 0 to BillsMeasureTree.Count - 1 do
+  begin
+    vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[i]);
+    vNode.Rec.SetBoolValue(vNode.Rec.HisHasMeasure, vNode.Rec.HisHasMeasure.AsBoolean or vNode.Rec.CurHasMeasure.AsBoolean);
+    vNode.Rec.SetBoolValue(vNode.Rec.CurHasMeasure, False);
+  end;
 end;
 
 end.

+ 1 - 1
Units/ProjectData.pas

@@ -1526,7 +1526,7 @@ begin
   end;
   FStaffData.Open(FConnection.Connection);
   FBillsMeasureData.ResetTreeNodeStageRec;
-  FBillsMeasureData.CalcMeasureFilter(FBillsMeasureData.BillsMeasureTree.FirstNode);
+  FBillsMeasureData.CalcMeasureFilter;
 end;
 
 procedure TProjectData.SaveForReceive(const AFileName: string);