ITPub博客

首页 > 应用开发 > IT综合 > 用C++Builder 6编写VCL控件 (转)

用C++Builder 6编写VCL控件 (转)

原创 IT综合 作者:worldblog 时间:2007-12-14 09:34:53 0 删除 编辑
用C++Builder 6编写VCL控件 (转)[@more@]

用C++Builder 6编写VCL控件

warton 2002.12西安

  如今天使用Borland的开发工具的程序员越来越多了,许多程序员开始从VC++,BC++等工具转向C++Builder(以下简称BCB  即Borland C++Builder) 和 Delphi。要使用这两种开发工具,你就要用到VCL(Visual Component Library 可视化控件库)。关于编写VCL的Delphi的书籍和资料相当多,但是要使用C++来写,资料就少得多了。

如何用C++语言来编写VCL控件是许多学习和使用BCB的程序员很关心的话题。如何编写呢?下面,我将编写VCL的思想和方法做一简单介绍,并给出一个简单的示例,以便让广大C++爱好者能熟悉和使用BCB来更好地编写程序。

首先,给出一个VCL的继承关系和结构图(以TForm为例):

Tobject

|

TPersistent

|

TComponentt

|

TControl

|

TWinControo

|

TScrollingWinControl

|

TCustomForm

|

TForm

从上面的图中可以看出:TObject 是所有派生类的父类,面TComponent是所有可视化组件的父类,TWinControl是所有窗口类组件的父类。只有从TWinControl继承的组件才具有 Handle属性。由于BCB和Delphi使用相同的类库VCL,所以关于组件继承方面的知识,程序员可以参考Delphi的书籍。然而用C++编写VCL就与使用Pascal(在Delphi 中使用Object Pascal)编写有相当大的区别了。

对VCL有一个大概的了解之后,咱还需要明白一些事情:用C++写的VCL类还是一个C++类,但是它与标准的C++类有一些区别。其中最重要的是VCL组件不具有多继承性。从TForm的继承关系图中我们可以看出这一点。

下面我们先做一个示例,简单讲述一下使用BCB来编写VCL的步骤:

1.  建立一个组件包:Package。在C++Builder的File菜单中选择New选项,随后在弹出的New Items窗口中Package图标,单击OK,如图 1-2所示。然后将Package保存为MyComponent.bpk。.NET/develop/article/images/17471_1.jpg" border=0>

  图1-2 建立一个新的Package

2.  新建一个组件。单击Package窗口上的Add按钮,如图1-3所示。

图1-3 Package 窗口

3.  在弹出的Add窗口中选择New Component页,如图1-4所示。

选择继承于TPanel,将Class Name命名为:UserControl,Palette Page改为User,随后确定。

图1-4新建一个组件

经过上面的步骤,一个简单的Package就已经可以安装在BCB的控件面板上了。现在你只需要单击Package窗口的Compile按钮编译之后,单击Install按钮就可以将这个组件安装到一个标签为My的Palette上了。

在BCB的控件面板上打开My标签,你将可以看到一个图标和Panel一样的图标,它就是TMyComponent类安装后的表现形式。到现在为止,一个简单的控件已经可以使用了。但是它没有什么特殊的功能,它只是简单地继承了TPanel控件,并且TMyComponent的所有属性和事件都是TPanel的,我并没有给它定义新的属性,方法和事件。也就是说,现在TMyCommponent和TPanel基本上完全一样(从功能上讲)。

控件写到这,你是不是已经觉得用BCB写控件很简单?不错,简单点几下鼠标就可以写一个控件,的确太简单了。但是这只是开始,困难的还在后面。

下面,分别从编写方法,属性,事件三方面来讲述编写一个完整的VCL控件的方法。

 

(未完待续)

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-993275/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    6241
  • 访问量
    2449430