| 
					
				 | 
			
			
				@@ -3,7 +3,7 @@ unit SearchDm; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 interface 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 uses 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SysUtils, Classes, DB, DBClient, sdIDTree, sdDB; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SysUtils, Classes, DB, DBClient, sdIDTree, sdDB, BillsTree; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   TLocateType = (ltCompile, ltMeasure); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,10 +25,7 @@ type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   private 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     FProjectData: TObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    procedure BeginSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    procedure EndSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    procedure AddSearchResult(Rec, StageRec: TsdDataRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    procedure AddSearchResult(ANode: TBillsIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   public 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     constructor Create(AProjectData: TObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     destructor Destroy; override; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -45,36 +42,37 @@ type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 implementation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 uses 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ProjectData, BillsMeasureDm, BillsCompileDm, Math, ZhAPI; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ProjectData, BillsMeasureDm, BillsCompileDm, Math, ZhAPI, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  UtilMethods, Forms, Controls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 {$R *.dfm} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { TSearchData } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-procedure TSearchData.AddSearchResult(Rec, StageRec: TsdDataRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+procedure TSearchData.AddSearchResult(ANode: TBillsIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if not Assigned(ANode) then Exit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cdsSearch.Append; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchID.AsInteger := Rec.ValueByName('ID').AsInteger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchCode.AsString := Rec.ValueByName('Code').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchB_Code.AsString := Rec.ValueByName('B_Code').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchName.AsString := Rec.ValueByName('Name').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchUnits.AsString := Rec.ValueByName('Units').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchPrice.AsFloat := Rec.ValueByName('Price').AsFloat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchQuantity.AsString := Rec.ValueByName('Quantity').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if Assigned(StageRec) then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cdsSearchCurQcQuantity.AsFloat := StageRec.ValueByName('QcQuantity').AsFloat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearchAddGatherQuantity.AsString := Rec.ValueByName('AddGatherQuantity').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if cdsSearchQuantity.AsFloat <> 0 then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cdsSearchCompleteRate.AsFloat := advRoundTo( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Rec.ValueByName('AddDealQuantity').AsFloat/cdsSearchQuantity.AsFloat*100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  with ANode do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchID.AsInteger := Rec.ValueByName('ID').AsInteger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchCode.AsString := Rec.ValueByName('Code').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchB_Code.AsString := Rec.ValueByName('B_Code').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchName.AsString := Rec.ValueByName('Name').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchUnits.AsString := Rec.ValueByName('Units').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchPrice.AsFloat := Rec.ValueByName('Price').AsFloat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchQuantity.AsString := Rec.ValueByName('Quantity').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if Assigned(StageRec) then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cdsSearchCurQcQuantity.AsFloat := StageRec.ValueByName('QcQuantity').AsFloat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearchAddGatherQuantity.AsString := Rec.ValueByName('AddGatherQuantity').AsString; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if cdsSearchQuantity.AsFloat <> 0 then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cdsSearchCompleteRate.AsFloat := advRoundTo( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          Rec.ValueByName('AddDealQuantity').AsFloat/cdsSearchQuantity.AsFloat*100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cdsSearch.Post; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-procedure TSearchData.BeginSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearch.DisableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 constructor TSearchData.Create(AProjectData: TObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   inherited Create(nil); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -86,11 +84,6 @@ begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   inherited; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-procedure TSearchData.EndSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cdsSearch.EnableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 procedure TSearchData.LocateCurrent(ALocateType: TLocateType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   procedure LocateCompile; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -116,82 +109,62 @@ procedure TSearchData.LocateCurrent(ALocateType: TLocateType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if ALocateType = ltCompile then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    LocateCompile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  else if ALocateType = ltMeasure then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    LocateMeasure; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Screen.Cursor := crHourGlass; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if ALocateType = ltCompile then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      LocateCompile 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else if ALocateType = ltMeasure then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      LocateMeasure; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  finally 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Screen.Cursor := crDefault; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 procedure TSearchData.SearchKeyword(const AKeyword: string); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  procedure CheckKeyword(ANode: TsdIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  var 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Rec, StageRec: TsdDataRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Rec := ANode.Rec; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Task 꼇꿴璂淃커쌘,쏭꿴璂묏넋좆헌데 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if {(Pos(AKeyword, Rec.ValueByName('Code').AsString) > 0) or} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        (Pos(AKeyword, Rec.ValueByName('B_Code').AsString) > 0) or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        (Pos(AKeyword, Rec.ValueByName('Name').AsString) > 0) then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      AddSearchResult(Rec, StageRec); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  procedure RecursiveSearchKeyword(ANode: TsdIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if not Assigned(ANode) then Exit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    CheckKeyword(ANode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ANode.HasChildren then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RecursiveSearchKeyword(ANode.FirstChild); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    RecursiveSearchKeyword(ANode.NextSibling); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  iNode: Integer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vNode: TBillsIDTreeNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if AKeyword = '' then Exit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  BeginSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cdsSearch.DisableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cdsSearch.EmptyDataSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     with TProjectData(FProjectData).BillsMeasureData do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RecursiveSearchKeyword(BillsMeasureTree.FirstNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for iNode := 0 to BillsMeasureTree.Count - 1 do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        vNode := TBillsIDTreeNode(BillsMeasureTree.Items[iNode]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Pos(AKeyword, vNode.Rec.B_Code.AsString) > 0) or 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            (Pos(AKeyword, vNode.Rec.Name.AsString) > 0) then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          AddSearchResult(vNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   finally 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    EndSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearch.EnableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 procedure TSearchData.SearchOverRange; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  procedure CheckOverRange(ANode: TsdIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  var 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Rec, StageRec: TsdDataRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Rec := ANode.Rec; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if Rec.ValueByName('Quantity').AsFloat < Rec.ValueByName('AddDealQuantity').AsFloat then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      AddSearchResult(Rec, StageRec) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  procedure RecursiveSearchOverRange(ANode: TsdIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if not Assigned(ANode) then Exit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ANode.HasChildren then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RecursiveSearchOverRange(ANode.FirstChild) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      CheckOverRange(ANode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    RecursiveSearchOverRange(ANode.NextSibling); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  i: Integer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vNode: TBillsIDTreeNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  BeginSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cdsSearch.DisableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cdsSearch.EmptyDataSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     with TProjectData(FProjectData).BillsMeasureData do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RecursiveSearchOverRange(BillsMeasureTree.FirstNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for i := 0 to BillsMeasureTree.Count - 1 do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        vNode := TBillsIDTreeNode(BillsMeasureTree.Items[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not vNode.HasChildren then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if vNode.Rec.Quantity.AsFloat < vNode.Rec.AddDealQuantity.AsFloat then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AddSearchResult(vNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   finally 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    EndSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearch.EnableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -205,38 +178,25 @@ begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 procedure TSearchData.SearchBelowRange; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  procedure CheckBelowRange(ANode: TsdIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  var 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Rec, StageRec: TsdDataRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Rec := ANode.Rec; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if Rec.ValueByName('Quantity').AsFloat = 0 then Exit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    StageRec := TProjectData(FProjectData).PhaseData.StageData.StageRecord(ANode.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if Rec.ValueByName('Quantity').AsFloat > Rec.ValueByName('AddDealQuantity').AsFloat then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      AddSearchResult(Rec, StageRec) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  procedure RecursiveSearchBelowRange(ANode: TsdIDTreeNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if not Assigned(ANode) then Exit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if ANode.HasChildren then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RecursiveSearchBelowRange(ANode.FirstChild) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      CheckBelowRange(ANode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    RecursiveSearchBelowRange(ANode.NextSibling); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  i: Integer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vNode: TBillsIDTreeNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  BeginSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cdsSearch.DisableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cdsSearch.EmptyDataSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     with TProjectData(FProjectData).BillsMeasureData do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      RecursiveSearchBelowRange(BillsMeasureTree.FirstNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for i := 0 to BillsMeasureTree.Count - 1 do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        vNode := TBillsIDTreeNode(BillsMeasureTree.Items[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not vNode.HasChildren then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if vNode.Rec.Quantity.AsFloat > vNode.Rec.AddDealQuantity.AsFloat then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            AddSearchResult(vNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   finally 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    EndSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cdsSearch.EnableControls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |