TemplateManagerHelper.pas 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. unit TemplateManagerHelper;
  2. // Export Templates To View
  3. interface
  4. uses
  5. ReportManager, ComCtrls, SysUtils;
  6. type
  7. TTemplateManagerHelper = class
  8. private
  9. function FindClassTreeNode(ATreeView: TTreeView; AParent: TTreeNode; const AName: string): TTreeNode;
  10. function AddClassTreeNode(ATreeView: TTreeView; AParent: TTreeNode; const AName: string): TTreeNode;
  11. function GetClassTreeNode(ATreeView: TTreeView; AParent: TTreeNode; const AName: string): TTreeNode;
  12. procedure AddTemplateToTreeView(ATreeView: TTreeView; ATemplate: TTemplateNode);
  13. public
  14. procedure ExportToTreeView(ATreeView: TTreeView; ATemplates: TTemplateManager);
  15. end;
  16. implementation
  17. { TTemplateManagerHelper }
  18. function TTemplateManagerHelper.AddClassTreeNode(ATreeView: TTreeView;
  19. AParent: TTreeNode; const AName: string): TTreeNode;
  20. begin
  21. Result := ATreeView.Items.AddChildObject(AParent, AName, Pointer(nil));
  22. Result.ImageIndex := -1;
  23. Result.SelectedIndex := -1;
  24. end;
  25. procedure TTemplateManagerHelper.AddTemplateToTreeView(
  26. ATreeView: TTreeView; ATemplate: TTemplateNode);
  27. var
  28. vClassNode, vNode: TTreeNode;
  29. begin
  30. vClassNode := GetClassTreeNode(ATreeView, nil, ATemplate.ClassNum + '.' + ATemplate.ClassName);
  31. if ATemplate.SubClassNum <> '' then
  32. vClassNode := GetClassTreeNode(ATreeView, vClassNode, ATemplate.SubClassNum + '.' + ATemplate.SubClassName);
  33. vNode := ATreeView.Items.AddChildObject(vClassNode, ATemplate.TemplateName, Pointer(ATemplate));
  34. vNode.ImageIndex := -1;
  35. vNode.SelectedIndex := -1;
  36. end;
  37. procedure TTemplateManagerHelper.ExportToTreeView(
  38. ATreeView: TTreeView; ATemplates: TTemplateManager);
  39. var
  40. iTemplate: Integer;
  41. TemplateNode: TTemplateNode;
  42. ClassNode: TTreeNode;
  43. begin
  44. ATreeView.Items.Clear;
  45. for iTemplate := 0 to ATemplates.Count - 1 do
  46. begin
  47. TemplateNode := ATemplates.Template[iTemplate];
  48. AddTemplateToTreeView(ATreeView, TemplateNode);
  49. end;
  50. ATreeView.Items.AlphaSort(True);
  51. end;
  52. function TTemplateManagerHelper.FindClassTreeNode(ATreeView: TTreeView;
  53. AParent: TTreeNode; const AName: string): TTreeNode;
  54. var
  55. I: Integer;
  56. vNode: TTreeNode;
  57. begin
  58. Result := nil;
  59. if Assigned(AParent) then
  60. vNode := AParent.getFirstChild
  61. else
  62. vNode := ATreeView.Items.GetFirstNode;
  63. while not Assigned(Result) and Assigned(vNode) do
  64. begin
  65. if SameText(vNode.Text, AName) then
  66. Result := vNode;
  67. vNode := vNode.getNextSibling;
  68. end;
  69. end;
  70. function TTemplateManagerHelper.GetClassTreeNode(ATreeView: TTreeView;
  71. AParent: TTreeNode; const AName: string): TTreeNode;
  72. begin
  73. Result := FindClassTreeNode(ATreeView, AParent, AName);
  74. if not Assigned(Result) then
  75. Result := AddClassTreeNode(ATreeView, AParent, AName);
  76. end;
  77. end.