Inno-Setup-issrc/Components/NewNotebookReg.pas

109 lines
2.5 KiB
ObjectPascal

unit NewNotebookReg;
{
Inno Setup
Copyright (C) 1997-2024 Jordan Russell
Portions by Martijn Laan
For conditions of distribution and use, see LICENSE.TXT.
TNewNotebook design-time registration
}
interface
uses
Classes;
procedure Register;
implementation
uses
NewNotebook, DesignIntf, DesignEditors;
{ TNewNotebookEditor }
type
TNewNotebookEditor = class(TComponentEditor)
public
procedure Edit; override;
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): String; override;
function GetVerbCount: Integer; override;
end;
procedure TNewNotebookEditor.Edit;
var
Notebook: TNewNotebook;
begin
{ When a page is double-clicked, select the parent notebook }
if Component is TNewNotebookPage then begin
Notebook := TNewNotebookPage(Component).Notebook;
if Assigned(Notebook) then
Designer.SelectComponent(Notebook);
end
end;
procedure TNewNotebookEditor.ExecuteVerb(Index: Integer);
var
Notebook: TNewNotebook;
Page: TNewNotebookPage;
begin
{ Find the notebook component to operate on. Note that this same editor class
is used for both TNewNotebook and TNewNotebookPage. }
if Component is TNewNotebookPage then begin
Notebook := TNewNotebookPage(Component).Notebook;
if Notebook = nil then
Exit; { just in case }
end
else
Notebook := Component as TNewNotebook;
case Index of
0, 1:
begin
Page := Notebook.FindNextPage(Notebook.ActivePage, Index = 0);
Notebook.ActivePage := Page;
Designer.Modified;
Designer.SelectComponent(Page);
end;
3:
begin
Page := TNewNotebookPage.Create(Notebook.Owner);
Page.Name := Designer.UniqueName(Page.ClassName);
Page.Notebook := Notebook;
Notebook.ActivePage := Page;
Designer.Modified;
Designer.SelectComponent(Page);
end;
end;
end;
function TNewNotebookEditor.GetVerbCount: Integer;
begin
Result := 4;
end;
function TNewNotebookEditor.GetVerb(Index: Integer): String;
begin
case Index of
0: Result := 'Next Page';
1: Result := 'Previous Page';
2: Result := '-';
3: Result := 'New Page';
else
Result := '';
end;
end;
procedure Register;
begin
RegisterComponents('JR', [TNewNotebook]);
RegisterClass(TNewNotebookPage);
RegisterComponentEditor(TNewNotebook, TNewNotebookEditor);
RegisterComponentEditor(TNewNotebookPage, TNewNotebookEditor);
end;
end.