⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paneled.pas

📁 Delphi高级开发指南是开发程序的好帮手
💻 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 + -