📄 cesimple.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 + -