2
0

NewNotebookReg.pas 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. unit NewNotebookReg;
  2. {
  3. Inno Setup
  4. Copyright (C) 1997-2024 Jordan Russell
  5. Portions by Martijn Laan
  6. For conditions of distribution and use, see LICENSE.TXT.
  7. TNewNotebook design-time registration
  8. }
  9. interface
  10. uses
  11. Classes;
  12. procedure Register;
  13. implementation
  14. uses
  15. NewNotebook, DesignIntf, DesignEditors;
  16. { TNewNotebookEditor }
  17. type
  18. TNewNotebookEditor = class(TComponentEditor)
  19. public
  20. procedure Edit; override;
  21. procedure ExecuteVerb(Index: Integer); override;
  22. function GetVerb(Index: Integer): String; override;
  23. function GetVerbCount: Integer; override;
  24. end;
  25. procedure TNewNotebookEditor.Edit;
  26. var
  27. Notebook: TNewNotebook;
  28. begin
  29. { When a page is double-clicked, select the parent notebook }
  30. if Component is TNewNotebookPage then begin
  31. Notebook := TNewNotebookPage(Component).Notebook;
  32. if Assigned(Notebook) then
  33. Designer.SelectComponent(Notebook);
  34. end
  35. end;
  36. procedure TNewNotebookEditor.ExecuteVerb(Index: Integer);
  37. var
  38. Notebook: TNewNotebook;
  39. Page: TNewNotebookPage;
  40. begin
  41. { Find the notebook component to operate on. Note that this same editor class
  42. is used for both TNewNotebook and TNewNotebookPage. }
  43. if Component is TNewNotebookPage then begin
  44. Notebook := TNewNotebookPage(Component).Notebook;
  45. if Notebook = nil then
  46. Exit; { just in case }
  47. end
  48. else
  49. Notebook := Component as TNewNotebook;
  50. case Index of
  51. 0, 1:
  52. begin
  53. Page := Notebook.FindNextPage(Notebook.ActivePage, Index = 0);
  54. Notebook.ActivePage := Page;
  55. Designer.Modified;
  56. Designer.SelectComponent(Page);
  57. end;
  58. 3:
  59. begin
  60. Page := TNewNotebookPage.Create(Notebook.Owner);
  61. Page.Name := Designer.UniqueName(Page.ClassName);
  62. Page.Notebook := Notebook;
  63. Notebook.ActivePage := Page;
  64. Designer.Modified;
  65. Designer.SelectComponent(Page);
  66. end;
  67. end;
  68. end;
  69. function TNewNotebookEditor.GetVerbCount: Integer;
  70. begin
  71. Result := 4;
  72. end;
  73. function TNewNotebookEditor.GetVerb(Index: Integer): String;
  74. begin
  75. case Index of
  76. 0: Result := 'Next Page';
  77. 1: Result := 'Previous Page';
  78. 2: Result := '-';
  79. 3: Result := 'New Page';
  80. else
  81. Result := '';
  82. end;
  83. end;
  84. procedure Register;
  85. begin
  86. RegisterComponents('JR', [TNewNotebook]);
  87. RegisterClass(TNewNotebookPage);
  88. RegisterComponentEditor(TNewNotebook, TNewNotebookEditor);
  89. RegisterComponentEditor(TNewNotebookPage, TNewNotebookEditor);
  90. end;
  91. end.