📄 paneled.pas
字号:
unit PanelEd;
interface
uses
Classes, Forms, Windows, Dialogs, ExptIntf, ToolIntf,
FileCtrl, SysUtils, EditIntf, DsgnIntf;
type
TPanelEditExpert = class (TIExpert)
public
function GetStyle: TExpertStyle; override;
function GetName: string; override;
function GetAuthor: string; override;
function GetComment: string; override;
function GetPage: string; override;
function GetGlyph: HICON; override;
function GetState: TExpertState; override;
function GetIDString: string; override;
function GetMenuText: string; override;
procedure Execute; override;
end;
// custom module for the panel
type
TPanelModule = class (TCustomModule)
public
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
procedure ValidateComponent(Component: TComponent); override;
end;
procedure Register;
implementation
uses
StdCtrls, ExtCtrls, Buttons;
// "standard" project expert
function TPanelEditExpert.GetStyle: TExpertStyle;
begin
// show up in the Help menu
Result := esStandard;
end;
function TPanelEditExpert.GetName: String;
begin
// official name
Result := 'Panel Edit Wizard'
end;
function TPanelEditExpert.GetAuthor: string;
begin
Result := 'Marco and Tim';
end;
function TPanelEditExpert.GetComment: String;
begin
Result := 'TPanelEditExpert Wizard';
end;
function TPanelEditExpert.GetPage: string;
begin
Result := '';
end;
function TPanelEditExpert.GetGlyph: HICON;
begin
Result := 0;
end;
function TPanelEditExpert.GetState: TExpertState;
begin
Result := [esEnabled];
end;
function TPanelEditExpert.GetIDString: String;
begin
// must be unique
Result := 'DDHandbook.PanelEditWizard'
end;
function TPanelEditExpert.GetMenuText: String;
begin
// the text of the menu item
Result := '&Panel Edit Wizard'
end;
procedure TPanelEditExpert.Execute;
var
ModuleName, FormName, FileName: string;
ModIntf: TIModuleInterface;
begin
ToolServices.GetNewModuleAndClassName (
'Panel', ModuleName, FormName, FileName);
ModIntf := ToolServices.CreateModuleEx (FileName, FormName,
'Panel', '', nil, nil,
[cmNewForm, cmAddToProject, cmUnNamed]);
ModIntf.ShowSource;
ModIntf.ShowForm;
ModIntf.Release;
end;
// custom module methods
function TPanelModule.GetVerbCount: Integer;
begin
Result := 1;
end;
function TPanelModule.GetVerb(Index: Integer): string;
begin
if Index = 0 then
Result:= 'Rename...';
end;
procedure TPanelModule.ExecuteVerb(Index: Integer);
var
NewName: string;
begin
if Index = 0 then
begin
NewName := Root.Name;
if InputQuery ('Panel Module Editor',
'New panel name:', NewName) then
Root.Name := NewName;
end;
end;
procedure TPanelModule.ValidateComponent(Component: TComponent);
begin
if not (Component is TButton) and
not (Component is TSpeedButton) then
raise Exception.Create ('The panel can host only buttons');
end;
procedure Register;
begin
RegisterCustomModule (TPanel, TPanelModule);
RegisterLibraryExpert(TPanelEditExpert.Create);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -