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

📄 cesimple.pas

📁 Delphi高级开发指南是开发程序的好帮手
💻 PAS
字号:
unit CeSimple;

interface

uses
  Classes, StdCtrls, DsgnIntf;

type
  TDdhDummy1Edit = class (TEdit) end;
  TDdhDummy2Edit = class (TEdit) end;
  TDdhDummy3Edit = class (TEdit) end;

  // property editor used to add
  // an about box to the local menu
  TCeAbout = class (TComponentEditor)
    function GetVerbCount: Integer; override;
    function GetVerb(Index: Integer): string; override;
    procedure ExecuteVerb(Index: Integer); override;
  end;

  // property editor defining a
  // custom double-click action
  TCeEditText = class (TComponentEditor)
    procedure Edit; override;
  end;

  // property editor with a dialog
  // box used to set a property
  TCeNameDialog = class (TCeAbout)
    procedure Edit; override;
    function GetVerbCount: Integer; override;
    function GetVerb(Index: Integer): string; override;
    procedure ExecuteVerb(Index: Integer); override;
  end;

procedure Register;

implementation

uses
  Controls, PefName, Forms, Dialogs, SysUtils, TypInfo;

// TCeAbout class
function TCeAbout.GetVerbCount: Integer;
begin
  Result := 1;
end;

function TCeAbout.GetVerb (Index: Integer): string;
begin
  if Index = 0 then
    Result := '&About this component...';
end;

procedure TCeAbout.ExecuteVerb (Index: Integer);
begin
  if Index = 0 then
    MessageDlg ('A dummy edit box, from an example'#13 +
      'of the book "Delphi Developer''s Handbook"',
      mtInformation, [mbOK], 0);
end;

// TCeEditText class
procedure TCeEditText.Edit;
begin
  (Component as TEdit).Text := '';
end;

// TCeNameDialog class

function TCeNameDialog.GetVerbCount: Integer;
begin
  Result := inherited GetVerbCount + 1;
end;

function TCeNameDialog.GetVerb (Index: Integer): string;
begin
  if Index < inherited GetVerbCount then
    Result := inherited GetVerb (Index)
  else
    if Index = inherited GetVerbCount then
      Result := '&Edit Name...';
end;

procedure TCeNameDialog.ExecuteVerb (Index: Integer);
begin
  if Index < inherited GetVerbCount then
    inherited ExecuteVerb (Index)
  else
    if Index = inherited GetVerbCount then
      Edit;
end;

procedure TCeNameDialog.Edit;
var
  PeForm: TNameForm;
  TheForm: TForm;
  I: Integer;
begin
  PeForm := TNameForm.Create (Application);
  try
    PeForm.Edit1.Text := Component.Name;
    // fill the listboxes
    TheForm := (Component.Owner) as TForm;
    for I := 0 to TheForm.ComponentCount - 1 do
    begin
      PeForm.ListAll.Items.Add (TheForm.Components[I].Name);
      if TheForm.Components[I] is Component.ClassType then
        PeForm.ListSame.Items.Add (TheForm.Components[I].Name);
    end;
    if PeForm.ShowModal = mrOK then
      Component.Name := PeForm.Edit1.Text;
  finally
    PeForm.Free;
  end;
end;

procedure Register;
begin
  RegisterComponents ('DDHB', [TDdhDummy1Edit,
    TDdhDummy2Edit, TDdhDummy3Edit]);
  RegisterComponentEditor (TDdhDummy1Edit, TCeAbout);
  RegisterComponentEditor (TDdhDummy2Edit, TCeEditText);
  RegisterComponentEditor (TDdhDummy3Edit, TCeNameDialog);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -