|  | @@ -123,7 +123,7 @@ type
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      function AddClassNode(AParent: TExTreeNode; const AName: string): TExTreeNode;
 | 
	
		
			
				|  |  |      function GetClassNode(ANode: TTemplateNode): TExTreeNode;
 | 
	
		
			
				|  |  | -    function GetSubClassNode(AClassNode: TExTreeNode; ANode: TTemplateNode): TExTreeNode;
 | 
	
		
			
				|  |  | +    function GetSubClassNode(AParent: TExTreeNode; AName: string): TExTreeNode;
 | 
	
		
			
				|  |  |      procedure AddReportTemplate(ANode: TTemplateNode);
 | 
	
		
			
				|  |  |    	procedure LoadReportTemplets;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -665,7 +665,15 @@ var
 | 
	
		
			
				|  |  |  begin
 | 
	
		
			
				|  |  |    vClassNode := GetClassNode(ANode);
 | 
	
		
			
				|  |  |    if ANode.SubClassNum <> '' then
 | 
	
		
			
				|  |  | -    vClassNode := GetSubClassNode(vClassNode, ANode);
 | 
	
		
			
				|  |  | +  begin
 | 
	
		
			
				|  |  | +    vClassNode := GetSubClassNode(vClassNode, ANode.SubClassNum + '.' + ANode.SubClassName);
 | 
	
		
			
				|  |  | +    if ANode.Class3Num <> '' then
 | 
	
		
			
				|  |  | +    begin
 | 
	
		
			
				|  |  | +      vClassNode := GetSubClassNode(vClassNode, ANode.Class3Num + '.' + ANode.Class3Name);
 | 
	
		
			
				|  |  | +      if ANode.Class4Num <> '' then
 | 
	
		
			
				|  |  | +        vClassNode := GetSubClassNode(vClassNode, ANode.Class4Num + '.' + ANode.Class4Name);
 | 
	
		
			
				|  |  | +    end;
 | 
	
		
			
				|  |  | +  end;
 | 
	
		
			
				|  |  |    vNode := extvReport.Items.AddChildObject(vClassNode, ANode.TemplateName, Pointer(ANode));
 | 
	
		
			
				|  |  |    vNode.ImageIndex := 2;
 | 
	
		
			
				|  |  |    vNode.SelectedIndex := 3;
 | 
	
	
		
			
				|  | @@ -1575,33 +1583,6 @@ begin
 | 
	
		
			
				|  |  |              'ÆóÒµQQ£º800003850   ¿Í·þÈÈÏߣº(0756)3850888';
 | 
	
		
			
				|  |  |  end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function TReportsForm.GetSubClassNode(AClassNode: TExTreeNode;
 | 
	
		
			
				|  |  | -  ANode: TTemplateNode): TExTreeNode;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  function FindNode(AParent: TExTreeNode; const AName: string): TExTreeNode;
 | 
	
		
			
				|  |  | -  var
 | 
	
		
			
				|  |  | -    I: Integer;
 | 
	
		
			
				|  |  | -    vNode: TExTreeNode;
 | 
	
		
			
				|  |  | -  begin
 | 
	
		
			
				|  |  | -    Result := nil;
 | 
	
		
			
				|  |  | -    if Assigned(AParent) then
 | 
	
		
			
				|  |  | -      vNode := AParent.getFirstChild
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -      vNode := extvReport.Items.GetFirstNode;
 | 
	
		
			
				|  |  | -    while not Assigned(Result) and Assigned(vNode) do
 | 
	
		
			
				|  |  | -    begin
 | 
	
		
			
				|  |  | -      if SameText(vNode.Text, AName) then
 | 
	
		
			
				|  |  | -        Result := vNode;
 | 
	
		
			
				|  |  | -      vNode := vNode.getNextSibling;
 | 
	
		
			
				|  |  | -    end;
 | 
	
		
			
				|  |  | -  end;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -begin
 | 
	
		
			
				|  |  | -  Result := FindNode(AClassNode, ANode.SubClassNum + '.' + ANode.SubClassName);
 | 
	
		
			
				|  |  | -  if not Assigned(Result) then
 | 
	
		
			
				|  |  | -    Result := AddClassNode(AClassNode, ANode.SubClassNum + '.' + ANode.SubClassName);
 | 
	
		
			
				|  |  | -end;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  function TReportsForm.AddClassNode(AParent: TExTreeNode;
 | 
	
		
			
				|  |  |    const AName: string): TExTreeNode;
 | 
	
		
			
				|  |  |  begin
 | 
	
	
		
			
				|  | @@ -1774,4 +1755,31 @@ begin
 | 
	
		
			
				|  |  |    end;
 | 
	
		
			
				|  |  |  end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +function TReportsForm.GetSubClassNode(AParent: TExTreeNode;
 | 
	
		
			
				|  |  | +  AName: string): TExTreeNode;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  function FindNode(AParent: TExTreeNode; const AName: string): TExTreeNode;
 | 
	
		
			
				|  |  | +  var
 | 
	
		
			
				|  |  | +    I: Integer;
 | 
	
		
			
				|  |  | +    vNode: TExTreeNode;
 | 
	
		
			
				|  |  | +  begin
 | 
	
		
			
				|  |  | +    Result := nil;
 | 
	
		
			
				|  |  | +    if Assigned(AParent) then
 | 
	
		
			
				|  |  | +      vNode := AParent.getFirstChild
 | 
	
		
			
				|  |  | +    else
 | 
	
		
			
				|  |  | +      vNode := extvReport.Items.GetFirstNode;
 | 
	
		
			
				|  |  | +    while not Assigned(Result) and Assigned(vNode) do
 | 
	
		
			
				|  |  | +    begin
 | 
	
		
			
				|  |  | +      if SameText(vNode.Text, AName) then
 | 
	
		
			
				|  |  | +        Result := vNode;
 | 
	
		
			
				|  |  | +      vNode := vNode.getNextSibling;
 | 
	
		
			
				|  |  | +    end;
 | 
	
		
			
				|  |  | +  end;  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +begin
 | 
	
		
			
				|  |  | +  Result := FindNode(AParent, AName);
 | 
	
		
			
				|  |  | +  if not Assigned(Result) then
 | 
	
		
			
				|  |  | +    Result := AddClassNode(AParent, AName);
 | 
	
		
			
				|  |  | +end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  end.
 |