|  | @@ -20,6 +20,7 @@ type
 | 
	
		
			
				|  |  |      cdsSearchCurQcQuantity: TFloatField;
 | 
	
		
			
				|  |  |      cdsSearchPrice: TFloatField;
 | 
	
		
			
				|  |  |      cdsSearchCompleteRate: TFloatField;
 | 
	
		
			
				|  |  | +    cdsSearchSerialNo: TIntegerField;
 | 
	
		
			
				|  |  |      procedure cdsSearchQuantityGetText(Sender: TField; var Text: String;
 | 
	
		
			
				|  |  |        DisplayText: Boolean);
 | 
	
		
			
				|  |  |    private
 | 
	
	
		
			
				|  | @@ -33,6 +34,7 @@ type
 | 
	
		
			
				|  |  |      procedure SearchKeyword(const AKeyword: string);
 | 
	
		
			
				|  |  |      procedure SearchOverRange;
 | 
	
		
			
				|  |  |      procedure SearchBelowRange;
 | 
	
		
			
				|  |  | +    procedure SearchRelaFile;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      procedure LocateCurrent(ALocateType: TLocateType);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -140,7 +142,8 @@ begin
 | 
	
		
			
				|  |  |        begin
 | 
	
		
			
				|  |  |          vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[iNode]);
 | 
	
		
			
				|  |  |          if (Pos(AKeyword, vNode.Rec.B_Code.AsString) > 0) or
 | 
	
		
			
				|  |  | -            (Pos(AKeyword, vNode.Rec.Name.AsString) > 0) then
 | 
	
		
			
				|  |  | +            (Pos(AKeyword, vNode.Rec.Name.AsString) > 0) or
 | 
	
		
			
				|  |  | +            (Pos(AKeyword, vNode.Rec.Code.AsString) > 0) then
 | 
	
		
			
				|  |  |            AddSearchResult(vNode);
 | 
	
		
			
				|  |  |        end;
 | 
	
		
			
				|  |  |      end;
 | 
	
	
		
			
				|  | @@ -212,4 +215,43 @@ begin
 | 
	
		
			
				|  |  |    end;
 | 
	
		
			
				|  |  |  end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +procedure TSearchData.SearchRelaFile;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  function HasRelaFile(vNode: TMeasureBillsIDTreeNode): Boolean;
 | 
	
		
			
				|  |  | +  var
 | 
	
		
			
				|  |  | +    i: Integer;
 | 
	
		
			
				|  |  | +  begin
 | 
	
		
			
				|  |  | +    Result := False;
 | 
	
		
			
				|  |  | +    with TProjectData(FProjectData) do
 | 
	
		
			
				|  |  | +      for i := 0 to AttachmentData.Count - 1 do
 | 
	
		
			
				|  |  | +      begin
 | 
	
		
			
				|  |  | +        if (AttachmentData[i].BillID = vNode.Rec.ID.AsInteger) and (AttachmentData[i].Phase = PhaseIndex) then
 | 
	
		
			
				|  |  | +        begin
 | 
	
		
			
				|  |  | +          Result := True;
 | 
	
		
			
				|  |  | +          Break;
 | 
	
		
			
				|  |  | +        end;
 | 
	
		
			
				|  |  | +      end;
 | 
	
		
			
				|  |  | +  end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var
 | 
	
		
			
				|  |  | +  i: Integer;
 | 
	
		
			
				|  |  | +  vNode: TMeasureBillsIDTreeNode;
 | 
	
		
			
				|  |  | +begin
 | 
	
		
			
				|  |  | +  cdsSearch.DisableControls;
 | 
	
		
			
				|  |  | +  try
 | 
	
		
			
				|  |  | +    cdsSearch.EmptyDataSet;
 | 
	
		
			
				|  |  | +    with TProjectData(FProjectData).BillsMeasureData do
 | 
	
		
			
				|  |  | +    begin
 | 
	
		
			
				|  |  | +      for i := 0 to BillsMeasureTree.Count - 1 do
 | 
	
		
			
				|  |  | +      begin
 | 
	
		
			
				|  |  | +        vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[i]);
 | 
	
		
			
				|  |  | +        if vNode.Rec.HasAttachment.AsBoolean or HasRelaFile(vNode) then
 | 
	
		
			
				|  |  | +          AddSearchResult(vNode);
 | 
	
		
			
				|  |  | +      end;
 | 
	
		
			
				|  |  | +    end;
 | 
	
		
			
				|  |  | +  finally
 | 
	
		
			
				|  |  | +    cdsSearch.EnableControls;
 | 
	
		
			
				|  |  | +  end;
 | 
	
		
			
				|  |  | +end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  end.
 |