| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | unit TemplateManagerHelper;// Export Templates To Viewinterfaceuses  ReportManager, ComCtrls, SysUtils;type  TTemplateManagerHelper = class  private    function FindClassTreeNode(ATreeView: TTreeView; AParent: TTreeNode; const AName: string): TTreeNode;    function AddClassTreeNode(ATreeView: TTreeView; AParent: TTreeNode; const AName: string): TTreeNode;    function GetClassTreeNode(ATreeView: TTreeView; AParent: TTreeNode; const AName: string): TTreeNode;    procedure AddTemplateToTreeView(ATreeView: TTreeView; ATemplate: TTemplateNode);  public    procedure ExportToTreeView(ATreeView: TTreeView; ATemplates: TTemplateManager);  end;implementation{ TTemplateManagerHelper }function TTemplateManagerHelper.AddClassTreeNode(ATreeView: TTreeView;  AParent: TTreeNode; const AName: string): TTreeNode;begin  Result := ATreeView.Items.AddChildObject(AParent, AName, Pointer(nil));  Result.ImageIndex := -1;  Result.SelectedIndex := -1;end;procedure TTemplateManagerHelper.AddTemplateToTreeView(  ATreeView: TTreeView; ATemplate: TTemplateNode);var  vClassNode, vNode: TTreeNode;begin  vClassNode := GetClassTreeNode(ATreeView, nil, ATemplate.ClassNum + '.' + ATemplate.ClassName);  if ATemplate.SubClassNum <> '' then    vClassNode := GetClassTreeNode(ATreeView, vClassNode, ATemplate.SubClassNum + '.' + ATemplate.SubClassName);  vNode := ATreeView.Items.AddChildObject(vClassNode, ATemplate.TemplateName, Pointer(ATemplate));  vNode.ImageIndex := -1;  vNode.SelectedIndex := -1;end;procedure TTemplateManagerHelper.ExportToTreeView(  ATreeView: TTreeView; ATemplates: TTemplateManager);var  iTemplate: Integer;  TemplateNode: TTemplateNode;   ClassNode: TTreeNode;begin  ATreeView.Items.Clear;  for iTemplate := 0 to ATemplates.Count - 1 do  begin    TemplateNode := ATemplates.Template[iTemplate];    AddTemplateToTreeView(ATreeView, TemplateNode);  end;  ATreeView.Items.AlphaSort(True);end;function TTemplateManagerHelper.FindClassTreeNode(ATreeView: TTreeView;  AParent: TTreeNode; const AName: string): TTreeNode;var  I: Integer;  vNode: TTreeNode;begin  Result := nil;  if Assigned(AParent) then    vNode := AParent.getFirstChild  else    vNode := ATreeView.Items.GetFirstNode;  while not Assigned(Result) and Assigned(vNode) do  begin    if SameText(vNode.Text, AName) then      Result := vNode;    vNode := vNode.getNextSibling;  end;end;function TTemplateManagerHelper.GetClassTreeNode(ATreeView: TTreeView;  AParent: TTreeNode; const AName: string): TTreeNode;begin  Result := FindClassTreeNode(ATreeView, AParent, AName);  if not Assigned(Result) then    Result := AddClassTreeNode(ATreeView, AParent, AName);end;end.
 |