教我做一个最简单的控件

weill 2007-12-19 10:15:44
我想学自个做控件,在网上搜了半天也找不到相关资料,所以很没面子的来了。
大家不可笑话我哈,玩了这么久的BCB,不会做控件真丢脸。

我的要求很简单,做一个控件,控件类似以下的玩意儿(我能想到的最简单的):
控件上要有一个Panel,在这个Panel中要有一个Label。
Label要求能设置它的属性,当LabColoer为1时为红色,为0时为黑色。
双击Label,Label上的文字变成“ItIs”。

请把具体的制作方法告诉我,别光告诉我代码。

PS:下面的这些我看懂了,也会了,但进一步的资料无法知道了。
*************************************
1.建立一个组件包:Package。在C++Builder的File菜单中选择New选项,随后在弹出的New Items窗口中Package图标,单击OK,然后将Package保存为MyComponent.bpk。
2.新建一个组件。单击Package窗口上的Add按钮。
3.在弹出的Add窗口中选择New Component页。
选择继承于TPanel,将Class Name命名为:UserControl,Palette Page改为User,随后确定。
*************************************
...全文
199 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
weill 2007-12-27
  • 打赏
  • 举报
回复
顺便说,老老实实地看《C++Builder5开发人员指南》那是会死人地!
这些技术书吖的不知到底是不是在真正的想帮人,总是乱七八糟不知所云。
看了半天还是云里雾里,还是看别人的例程来得快,参照一下,一试就明白了,哈。
weill 2007-12-27
  • 打赏
  • 举报
回复
自个写出了一个例子,今天太晚了,明天进行思路与要点整理,呵呵。
开心中……
weill 2007-12-27
  • 打赏
  • 举报
回复
从我发贴到现在过去一个星期了。
这期间断断续续地在网上查资料。
最后下载到了一个别人用BCB5.0写的简单的控件原代码,总算看明白了怎么回事。

现在我已经基本搞清了VCL控件的制作原理了。

虽然各位没有实质性的帮助,但还是在这儿谢过大家,相聚就是有缘,呵呵。
fbmsyu 2007-12-24
  • 打赏
  • 举报
回复
好.
yefu2000 2007-12-21
  • 打赏
  • 举报
回复
跟随星星的脚步,学习~
weill 2007-12-20
  • 打赏
  • 举报
回复
我正在一步一步搞明白它。
现在知道了怎么向自制控件中加入属性了。
还发现其实属性都应该带有事件的。

卡在这个事件怎么写的问题上了,好象提示要重载。
今天太晚了,明天继续吧,回家睡觉了。

还是希望有朋友能帮我解说一二,能提点一些重点都是好的。
CACACACACA 2007-12-20
  • 打赏
  • 举报
回复
注意
Register, 不然面板上不会显示出来
CACACACACA 2007-12-20
  • 打赏
  • 举报
回复
1.建立一个组件包:Package。在C++Builder的File菜单中选择New选项,随后在弹出的New Items窗口中Package图标,单击OK,然后将Package保存为MyComponent.bpk。
2.新建一个组件。单击Package窗口上的Add按钮。
3.加入一个写好的.cpp或.pas源文件

补充:


unit DemoLbl;

interface

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

type
TDemoLabel = class(TGraphicControl)
private
FFocusControl: TWinControl;
procedure SetFocusControl(Value: TWinControl);
procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
protected
procedure Notification(AComponent: TComponent;
Operation: TOperation); override;
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
published
property Caption;
property Color;
property FocusControl: TWinControl read FFocusControl write SetFocusControl;
property Font;
property ParentColor;
property ParentFont;
end;

procedure Register;

implementation

{ TDemoLabel }

constructor TDemoLabel.Create(AOwner: TComponent);
// 省略
procedure Register;
begin
RegisterComponents('Samples', [TDemoLabel]);
end;

end.
My_Love 2007-12-20
  • 打赏
  • 举报
回复
不会帮顶...
i_love_pc 2007-12-20
  • 打赏
  • 举报
回复
偶的电子书上是《C++Builder5开发人员指南》 第五部分(39~51章) 创建定制组件
我不懂电脑 2007-12-20
  • 打赏
  • 举报
回复
同上
cczlp 2007-12-20
  • 打赏
  • 举报
回复
看<<C++ Builder 5 开发人员指南>> 电子书第10章
i_love_pc 2007-12-20
  • 打赏
  • 举报
回复
自己动手,丰衣足食!
非常欣赏楼主的签名!!
weill 2007-12-20
  • 打赏
  • 举报
回复
对 风归叶 表示抗议,你吖的给我Delphi的代码干嘛啊。我可不是两栖动物。

对其它人表示BS,吖的,这么简单的东西,给我说一下杯。

不过,对本人自个更表示BS,这么菜的问题都不会,55555555……

好吧,我去老妖的网站上下载到了《C++Builder5开发人员指南》正在静心查看中……

BS归BS,对大家的帮助还是深表感谢,能答理我的就是好朋友,呵呵。

等我搞明白了我就结帖哈,放心吧,我从来不做赖帐之人。
laowang2 2007-12-20
  • 打赏
  • 举报
回复
up

604

社区成员

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

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