用C++Builder 6编写VCL控件

用C++Builder 6编写VCL控件用C++Builder6编写VCL控件warton2002.12西安  如今天使用Borland的开发工具的程序员越来越多了,许多程序员开始从VC++,BC++等工具转向C++Builder(以下简称BCB 即BorlandC++Builder)和Delphi。要使用这两种开发工具,你就要用到VCL(VisualComponentLibrary可视化控件库)。关

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

C++Builder 6编写VCL控件

warton 2002.12西安

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

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

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

TObject

|

TPersistent

|

TComponentt

|

TControl

|

TWinControo

|

TScrollingWinControl

|

TCustomForm

|

TForm

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

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

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

1.              建立一个组件包:Package。在C++BuilderFile菜单中选择New选项,随后在弹出的New Items窗口中Package图标,单击OK,如图 1-2所示。然后将Package保存为MyComponent.bpk用C++Builder 6编写VCL控件

                           1-2 建立一个新的Package

2.       新建一个组件。单击Package窗口上的Add按钮,如图1-3所示。用C++Builder 6编写VCL控件

1-3 Package 窗口

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

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

用C++Builder 6编写VCL控件1-4新建一个组件

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

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

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

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

 

(未完待续)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192833.html原文链接:https://javaforall.net

(0)
上一篇 2025年12月7日 下午12:22
下一篇 2025年12月7日 下午1:01


相关推荐

  • 维纳过程

    维纳过程维纳过程 也称为布朗运动过程 1 随机漫步过程一个人从原点开始 每次随机选择一个方向走一步 这是一个随机过程 假想有无数个人同时开始随机漫步 每个人都可以自由选择方向 以此模拟随机漫步过程 显然随机过程的均值为 0 对特定时间点的一步 每个人的选择是随机的 那么这个时间点上的随机变量就是无数个独立随机变量的累加 因此服从正态分布 2 随机漫步过程的连续化就是维纳过程 参见 Ra

    2026年3月20日
    2
  • 液压油报关_液压油算是危险品吗

    液压油报关_液压油算是危险品吗  韩国液压油进口代理报关知识整理  液压油就是我们利用液体压力能的液压控制系统可以使用的液压介质,在液压技术系统中起着能量信息传递、抗磨、系统进行润滑、防腐、防锈、冷却等作用。对于液压油,首先要满足液压装置在工作温度和启动温度下的液体粘度要求,因为润滑油的粘度变化直接关系到液压作用、传动效率和传动精度,还要求润滑油的粘温性能和剪切稳定性能满足不同用途的需要。液压油的种类繁多,分类管理方法各异,长期发展以来,习惯以用途可以进行垃圾分类,也有学生根据不同油品类型、化学组分或可燃性分类的。这些分类方法只反

    2026年2月9日
    6
  • Python实现合并排序(归并排序)(一文看懂)

    Python实现合并排序(归并排序)(一文看懂)1 归并排序原理归并排序采用分而治之的原理 一 将一个序列从中间位置分成两个序列 二 在将这两个子序列按照第一步继续二分下去 三 直到所有子序列的长度都为 1 也就是不可以再二分截止 这时候再两两合并成一个有序序列即可 2 一图以明之 3 Python 代码 defmerge a b c h j 0whil

    2026年3月18日
    2
  • OSI 七层模型和TCP/IP模型及对应协议(详解)

    OSI 七层模型和TCP/IP模型及对应协议(详解)OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯 因此其最主要的功能就是帮助不同类型的主机实现数据传输 完成中继功能的节点通常称为中继系统 在 OSI 七层模型中 处于不同层的中继系统具有不同的名称 一个设备工作在哪一层 关键看它工作时利用哪一层的数据头部信息 网桥工作时 是以 MAC 头

    2026年3月19日
    2
  • 2019最新 JAVA架构师系列课程分布式缓存技术Redis权威指南[通俗易懂]

    2019最新 JAVA架构师系列课程分布式缓存技术Redis权威指南[通俗易懂]课程目标本课程从0基础开始,对redis的方方面面进行细粒度的讲解:包括基础操作、高级命令、各种集群模式、动态增减节点,结合lua使用,实现抢红包等应用场景。适用人群java程序员、技术主管、架构师、技术总监课程简介基础部分:1.xNOSQL(Redis)简介、Redis安装部署与可视化工具使用2.xRedis基础数据类型详解结合实际工作使用3.xRedis高级命令、Redis与java的使…

    2025年6月7日
    4
  • R语言批量生成CaseWhen的解决方案

    R语言批量生成CaseWhen的解决方案R语言case_when批量生成自定义函数

    2025年9月20日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号