RegisterComponents与RegisterNoIcon

林石公 2010-05-13 05:20:40
加精
写组件时,一般会用到这两个函数

1 procedure RegisterComponents(const Page: string; const ComponentClasses: array of TComponentClass);
2 procedure RegisterNoIcon(const ComponentClasses: array of TComponentClass);

函数1注册的一般会出现在面板上,如可视的TEdit,不可视的TMainMenu, TActionList
函数2注册的不会出现在面板上,如TMenuItem, TAction

那么在运行时,能否用代码来判断某个组件是如何注册的
实际上我的想作一个窗体编辑器,RegisterComponents的非可视组件我需要显示,而RegisterNoIcon注册的组件不需要显示,所以我希望能判断一下以便我分别处理

嗯,从是否TControl判断可能行不通,例如TActionList,TAction,TMenuItem,TMainMenu都不是TControl但Delphi的IDE会在设计窗体时,显示TActionList,TMainMenu,而不显示TAction,TMenuItem,

请指教,谢谢
...全文
1474 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
shyqqmm 2010-05-26
  • 打赏
  • 举报
回复
我顶,学习一哈1
zqsmatlab 2010-05-24
  • 打赏
  • 举报
回复
好东西!!!!!!!!!!
野鬼灬 2010-05-23
  • 打赏
  • 举报
回复
好,相当好,帮顶
daxiao474 2010-05-22
  • 打赏
  • 举报
回复
学习中哦 现在我的知识还太少了 进来学习一下咯 值得分享 谢谢 顶一下
xiaopingtan 2010-05-22
  • 打赏
  • 举报
回复
tks !我顶!
wxzself 2010-05-21
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

mycomps : tStringlist;
mynoIcons : Tlist;

implementation

{$R *.dfm}
// 测试注册代码
procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterComponents('', [tbutton, tlabel]);
RegisterNoIcon([tcheckbox, tedit]);
end;


// 注册控件过程
procedure RegisterComponentsProc(const Page: string;
const ComponentClasses: array of TComponentClass);
var
i:Integer;
begin
for i := low(ComponentClasses) to high(ComponentClasses) do
begin
mycomps.AddObject(Page, TObject(ComponentClasses[i]));
end;
end;

// 注册非可视控件过程
procedure RegisterNoIconProc(
const ComponentClasses: array of TComponentClass);
var
i:Integer;
begin
for i := low(ComponentClasses) to high(ComponentClasses) do
begin
mynoIcons.Add(ComponentClasses[i]);
end;
end;

// 初始化
initialization
mycomps := tStringlist.Create;
mynoIcons := Tlist.Create;
classes.RegisterComponentsProc := RegisterComponentsProc;
classes.RegisterNoIconProc := RegisterNoIconProc;

// 析构
finalization
classes.RegisterComponentsProc := nil;
classes.RegisterNoIconProc := nil;
FreeAndNil(mycomps);
FreeAndNil(mynoIcons);

end.
xiaowucmd1 2010-05-21
  • 打赏
  • 举报
回复
顶你下伙计!
hyckkx 2010-05-20
  • 打赏
  • 举报
回复
学习学习学习
罗曼松松 2010-05-20
  • 打赏
  • 举报
回复
兄弟,顶死啊
兜兜 2010-05-20
  • 打赏
  • 举报
回复
dddddddddddddddddddddddd
xiaoguizl 2010-05-20
  • 打赏
  • 举报
回复
顶一个
dazade 2010-05-20
  • 打赏
  • 举报
回复
呵呵呵!
dazade 2010-05-20
  • 打赏
  • 举报
回复
好,顶起来!
AnYidan 2010-05-20
  • 打赏
  • 举报
回复
关注学习中
jjjahhahahahhah 2010-05-20
  • 打赏
  • 举报
回复
好 非常好
Michealwu 2010-05-20
  • 打赏
  • 举报
回复
帅气,顶一个!!!!!!
TONGMMtt 2010-05-20
  • 打赏
  • 举报
回复









hello




















































































个地方官方





林石公 2010-05-20
  • 打赏
  • 举报
回复
哇,楼上的兄弟有这个东西的源码?
Frank.WU 2010-05-20
  • 打赏
  • 举报
回复
Greatis Form Designer Pro 可能有点启发
  • 打赏
  • 举报
回复
帮顶。。。
加载更多回复(36)
Bounds 函数 输入上下高宽返回一个矩形结构。 CollectionsEqual 函数 比较两个TCollection是不是相等。 CurrentGroup 变量 FindClass 函数 从输入字符串中返回一个从TPersistent继承的类 FindGlobalComponent 变量 返回一个最高阶的容器类。 GetClass 函数 返回一个已经注册了的从TPersistent继承的类 LineStart 函数 返回下一行的开始字符位置 ObjectBinaryToText 过程 转换对象的二进制流形式到文件。 ObjectResourceToText 过程 转换对象的二进制资源到文件。 ObjectTextToBinary 过程 转换保存对象的文件形式到二进制流。 ObjectTextToResource 过程 转换保存对象的文件形式到资源。 Point 函数 输入X,y坐标返回一个点结构。 ReadComponentRes 函数 从窗口资源中读出一个控件和她的属性。 ReadComponentResEx 函数 同上 ReadComponentResFile 函数 从窗口资源文件中读出一个控件和她的属性。 Rect 函数 输入上下左右返回一个矩形结构 RegisterClass 过程 注册一个从TPersistent继承的类,使她的类的类型能够被识别。 RegisterClassAlias 过程 注册一个和另一个除了名字外都相同的类。 RegisterClasses 过程 注册一组类 RegisterComponents 过程 注册一组控件 RegisterIntegerConsts 过程 RegisterNoIcon 过程 注册一组没有图标的控件 RegisterNonActiveX 过程 防止一组控件被ActiveX wizard识别。 UnregisterClass 过程 反注册一个类 UnregisterClasses 过程 反注册一组类 UnregisterModuleClasses 过程 反注册定义在模块中的所有的类 WriteComponentResFile 过程 写控件和她的属性到文件。
文件: ActnList CreateAction 函数 创建一个指定类型的Action,显示在action list editor中。 EnumRegisteredAction 过程 枚举已经注册的Action RegisterAction 过程 注册Action UnRegisterAction 过程 反注册Action 文件: Classes Bounds 函数 输入上下高宽返回一个矩形结构。 CollectionsEqual 函数 比较两个TCollection是不是相等。 CurrentGroup 变量 FindClass 函数 从输入字符串中返回一个从TPersistent继承的类 FindGlobalComponent 变量 返回一个最高阶的容器类。 GetClass 函数 返回一个已经注册了的从TPersistent继承的类 LineStart 函数 返回下一行的开始字符位置 ObjectBinaryToText 过程 转换对象的二进制流形式到文件。 ObjectResourceToText 过程 转换对象的二进制资源到文件。 ObjectTextToBinary 过程 转换保存对象的文件形式到二进制流。 ObjectTextToResource 过程 转换保存对象的文件形式到资源。 Point 函数 输入X,y坐标返回一个点结构。 ReadComponentRes 函数 从窗口资源中读出一个控件和她的属性。 ReadComponentResEx 函数 同上 ReadComponentResFile 函数 从窗口资源文件中读出一个控件和她的属性。 Rect 函数 输入上下左右返回一个矩形结构 RegisterClass 过程 注册一个从TPersistent继承的类,使她的类的类型能够被识别。 RegisterClassAlias 过程 注册一个和另一个除了名字外都相同的类。 RegisterClasses 过程 注册一组类 RegisterComponents 过程 注册一组控件 RegisterIntegerConsts 过程 RegisterNoIcon 过程 注册一组没有图标的控件 RegisterNonActiveX 过程 防止一组控件被ActiveX wizard识别。 UnregisterClass 过程 反注册一个类 UnregisterClasses 过程 反注册一组类 UnregisterModuleClasses 过程 反注册定义在模块中的所有的类 WriteComponentResFile 过程 写控件和她的属性到文件。 文件: Clipbrd Clipboard 函数 返回一个TClipboard对象 SetClipboard 函数 用一个新TClipboard替换全局TClipboard。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧