社区
Delphi
帖子详情
如何。。给自己写的组件加上自己定义的组件图标阿?
lijinjie
2004-03-28 03:16:36
如何。。给自己写的组件加上自己定义的组件图标阿?
写了几个组件。。。但是。。这个组件的图标怎么搞定阿?。。。
...全文
69
6
打赏
收藏
如何。。给自己写的组件加上自己定义的组件图标阿?
如何。。给自己写的组件加上自己定义的组件图标阿? 写了几个组件。。。但是。。这个组件的图标怎么搞定阿?。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
postren
2004-03-28
打赏
举报
回复
小虫你的我没有弄过。。。。上面的那个大哥的。。我照着来成功了。呵呵。。
*.dcr是组件的资源文件。。
你给的是*.res估计可能会有问题。
--------------------------------
我都是用Res的, 肯定可以的, 我写过
lijinjie
2004-03-28
打赏
举报
回复
哈哈。。过几天发布组件包。。。。
lijinjie
2004-03-28
打赏
举报
回复
小虫你的我没有弄过。。。。上面的那个大哥的。。我照着来成功了。呵呵。。
*.dcr是组件的资源文件。。
你给的是*.res估计可能会有问题。
tanqth
2004-03-28
打赏
举报
回复
创建Unit1.RES文件
在Unit1.RES中添加位图
postren
2004-03-28
打赏
举报
回复
implementation
{$R Unit1.RES} //Unit1为你组件单元的名字
创建Unit1.RES文件
在Unit1.RES中添加位图
命名和你的组件类名相同的, 比如有一个TAAA的类要做成组件
则需要一个TAAA的位图名称, 好像必须大写名称
我是在VC中制作的RES文件, 把位图的ID命名要用""引起来
和你的Unit1.pas放到一起就可以了
试试看
cll007
2004-03-28
打赏
举报
回复
转贴
http://www.csdn.net/develop/read_article.asp?id=20262
三、添加组件图标、注册组件的属性类别:
在前面的文章中我们已经完成了组件的基本功能的开发。但是遗憾的是一但你安装了组件包,你会发现组件显示在delphi组件页中的图标并不能清楚的说明我们组件的功能(由于我们的组件继承自TcustomLabel,图标是一个默认的delphiVCL的图标,如果组件继承自其它已经出现在组件面板中的组件,图标还会和已有组件一样!)。显然一个好的组件特别是一个要发布的商业化组件需要一个有自己特色的目标,下面我们便来完成这一工作:
打开delphi自带的Image Editor(ToolsàImage Editor),新建一个组件资源(fileànewàComponent Resource File (.dcr)),在弹出的窗口中右键单击new新建一个bitmap位图资源调整好位图的大小(我们用24*24)和色深后确定,双击建立好的位图名字还是做图(做图工具的使用基本和windows自带的画图程序差不多,这里略过),完成后我们需要为位图文件另取一个名字(右键点击bitmap),因为delphi强制要求这个位图的名字要和组件的名字一样,并且要全部大写,这里我们就取为:TCLOCK。最后保存这个资源文件到我们的组件包(dpk文件)目录,命名为ClockDcr.dcr。最后在Clock的代码中的interface部分加入一个编译器开关:{$R ClockDcr.dcr}然后重新编译更新组件(还记得怎么更新吗?),这时的组件图标已经变成我们刚才做的位图了!
接下来我们将为我们开发的组件的属性进行分类并介绍一个组件开发中重要的特性:属性类别。
为了让我们组件的一些和时钟有关的属性注册成一个新的类别把它们和label的属性分开开来,让组件用户能够更容易的发现组件的新特性,我们继承了属性类别的基类TpropertyCategory(在delphi5中这需要引用单元DsgnIntf,不过应该特别注意在delphi7中已经没有了这个基类,也没有这个单元文件,注册新的属性类别可以通过直接使用RegisterPropertyInCategory这种简单的办法完成,在下面的代码中会在相应的地方同时给出两种方法并说明他们的不同。)并覆盖它的两个类方法,最后在Register过程中用RegisterPropertyInCategory(在delphi5中在DsgnIntf单元,在delphi7中在DesignIntf单元,注意:delphi的一些单元并没有被安装,包括我们这里指出的这两个单元和将要在后文中指出的单元,这些单元属于delphi的open tools api是用来方便我们,特别是组件开发者用来扩展delphi。如果你的delphi没有这些单元,请将delphi安装目录下的source文件夹里ToolsAPI文件夹中的pas文件拷贝到lib目录下,在你第一个需要用到这些单元的程序编译时delphi会自动编译这些单元)方法注册属性类别。我们把以下的部分代码补充进我们开发的组件的原代码中:
uses
DesignIntf;//delphi7//delphi5用DsgnIntf
///////////这部分代码如果是delphi7就不需要了///////////////
type
TClockGategory=class(TpropertyCategory)//建立一个新的属性类别
Class function Name:string;override;//属性类别的名称
Class function Description:string;override;//属性类别的描述
End;
……
Class function TClockGategory .Name:string;
Begin
Result:=’ClockPro’;
End;
Class function TClockGategory . Description:string;
Begin
Result:=’Our Component Clock Description’;
End;
////////////////////////////////////////////////////////////////////////////////////
接下来我们要做的就是修改register过程:
procedure Register;
begin
RegisterComponents('ClockAndTime', [TClock]);
////////////这是delphi7的代码/////////////////////////////
RegisterPropertyInCategory('ClockPro',TClock,'State');
RegisterPropertyInCategory('ClockPro',TClock,'Active');
RegisterPropertyInCategory('ClockPro',TClock,'BeginTime');
RegisterPropertyInCategory('ClockPro',TClock,'WakeTime');
RegisterPropertyInCategory('ClockPro',TClock,'AllowWake');
RegisterPropertyInCategory('ClockPro',TClock,'OnWakeUp');
RegisterPropertyInCategory('ClockPro',TClock,'OnTimeUp');
//////////////////////////////////////////////////////////
///////////////这是delphi5的代码/////////////////////////
{
RegisterPropertyInCategory(TClockGategory,TClock,'State');
RegisterPropertyInCategory(TClockGategory,TClock,'Active');
RegisterPropertyInCategory(TClockGategory,TClock,'BeginTime');
RegisterPropertyInCategory(TClockGategory,TClock,'WakeTime');
RegisterPropertyInCategory(TClockGategory,TClock,'AllowWake');
RegisterPropertyInCategory(TClockGategory,TClock,'OnWakeUp');
RegisterPropertyInCategory(TClockGategory,TClock,'OnTimeUp');
}
////////////////////////////////////////////////////////
end;
重新编译后,做一个测试程序,这时只要组件使用者右键单击Object Inspector选择ArrangeàBy Category就可以看到属性已经被清楚的分类了,如下图:
然而,应该清楚的是属性类别绝对不能被滥用,因为过多的使用该技术会使组件使用者为了找到某一个属性变的更加麻烦和摸不着头脑。
在接下来的文章里,我们将继续研究两个很有用的组件特性。
(未完待续)
Vue|自
定义
组件
库
组件
“前缀“咋
定义
?
自
定义
组件
库
组件
"前缀",咋
定义
?假如我自己个
写
一个
组件
库,怎么自
定义
自己的前
组件
前缀名。如:我自
定义
一个Button按钮,要让ta带上我自
定义
的特色,成为这样<huawei-button></huawei-button> 。
vant 中使用cell
组件
定义
图标
该图片和位置
@本来想直接使用icon
组件
,使用阿里的
图标
库,...vant 中使用cell
组件
定义
图标
该图片和位置像微信信息栏一样 <div> <van-cell-group class="vanCellGroupClass"><!--../../assets/tou.png--> &...
怎么
写
vue
组件
1.分析:什么时候要
写
组件
呢? 举例如下图,一个页面中被反复引用的东西,可以将它提取出来
写
成一个
组件
。 2.
组件
怎么
写
? 1.index.vue文件(主页) <template> <view class="Policy-page"> <...
Flutter
组件
之
图标
(Icon)和
图标
按钮(IconButton)
图标
组件
(Icon)为展示
图标
的
组件
,该
组件
不可交互,要实现交互的
图标
,可以考虑使用IconButton
组件
。
图标
组件
相关的
组件
有一下几个: IconButton:可交互的Icon。 Icons:框架自带Icon集合。 IconTheme:Icon...
Ant Design React使用Tree
组件
时,如何修改最后一个子项的小
图标
.
官方的回答是:在 showLine 时,如何隐藏子节点
图标
?文件
图标
通过 switcherIcon 来实现,如果不需要你可以覆盖对应的样式跳转. 官方给出的这句解释,我理解上是使用css样式覆盖???或者通过在Tree
组件
上使用switchIcon...
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章