扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
无意中从一个免费控件源码中发现了这个方法。 其实很简单,delphi的TComponent类下面已经有一个子类TComponentEditor,只要从这个子类再继承一个类即可。
源码如下:
uses DesignIntf, DesignEditors;//新增这两个引用单元
type
TSMBLogin = class(TComponent)
private
{ Private declarations }
……
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy(); override;
……
published
{ Published declarations }
property ……;
end;
type
TSmbLoginEditor = class(TComponentEditor)
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
procedure DoDesign;
end;
……
……
{ TSmbLoginEditor }
procedure TSmbLoginEditor.DoDesign;
begin
ShowGoodarkAbout;//调用自定义的编辑窗口
end;
procedure TSmbLoginEditor.ExecuteVerb(Index: Integer);
begin
//nherited;
case index of
0: DoDesign;
1: Application.MessageBox(PChar('版本1.0'), '关于', MB_OK +
MB_ICONINFORMATION);
end;
end;
function TSmbLoginEditor.GetVerb(Index: Integer): string;
begin
case index of
0: result := '设计';
1: result := '版本';
end;
end;
function TSmbLoginEditor.GetVerbCount: Integer;
begin
result := 2;
end;
编译控件后测试一下,效果图如下:
点击“设计”即可弹出自定义窗口
点击“版本”弹出对话框
效果图看这边
http://priderock.dns0755.net:800/blog/?play=show&id=107
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者