C++ Builder 初学问与答 (十一)

C++ Builder 初学问与答(二十) 作者:董维春 网名:ch_builder(版权要求:请务必尊重知识产权,未经授权不要转载、摘录)17 事件及事件响应16)问:从前面的编程过程可以看出,用C++Builder开发应用程序的一个特点是,大部分的编程工作是在响应事件和处理事件上。事件的产生可能来自于系统,也可能来自于用户。您能给我详细介绍一下事件吗?答:好的,这节课我们将对事件进行深入地探讨,并重点讲述常用的鼠标和 阅读详情

11.工具条组件

87)问:工具条是Windows编程经常要用的, C++Builder能不能实现这个功能呢?

答:当然可以,工具条是由许多具有图形的按钮组成的,这些按钮被分隔符分隔成许多组,每个组都能够完成特定的工作。工具条上的按钮具有与位图按钮相似的特性——可以拥有多个位图,当按钮处于不同状态时,例如按下、失效等,将显示不同的位图。以前C++Builder制作工具条的方法是通过把加速按钮放在面板组件Panel上实现的。现在,我们不必使用这两种组件的组合,只要使用ToolBar就可以创建工具条了。工具条是比较难掌握的,它之所以不容易掌握是因为它包含的TToolButton组件有三个属性:Grouped,AllowAllUp和Down,它们的组合可以产生各种不同效果的按钮组。这三个属性我们一定要好好理解。

 

88)问:那请给我介绍一下Toolbar这个组件的使用方法好吗?

答:好的,我们先从ToolBar的属性入手,通过对一些重要属性的分析来了解它。ToolBar包含一些前面没有见过的属性:

ButtonHeight属性指出了工具条中按钮的高度。

ButtonWidth属性用来设定工具条中按钮的宽度。

Flat属性为true时,使工具条透明,同时使工具条上按钮之间的边界消失。俗称平面工具条,它的缺省值为False。

Indent用来在工具条的左边创建一个边沿区。

ShowCaptins确定是否允许在工具条的按钮上显示标题。缺省值为False。

Wrapable设定是否允许工具条上的按钮换行。缺省值为True。

List属性,当这个属性为True时,工具条上按钮的图标在左,标题在右。为False时,按钮的图标在上,标题在下。缺省值为False。

Images用来设定正常情况下,按钮上显示的图标列表。

HotImages用来设定当鼠标移动到按钮上显示的图标列表。

DisabledImages用来设定按钮失效时显示的图标列表。

工具条上所有按钮显示的图标就包含在这三个图标列表中。

在前面介绍的ListView组件中,属性LargeImages和SmallImages分别表示在两种不同的状态下显示的图标列表。ToolBar的这三种属性也有类似的特点,它们分别表示在正常状态、鼠标指向工具条以及按钮失效时显示的图标列表。

此外,还有几个运行时态属性:

ButtonCount属性,指出了工具条中按钮的个数。

Buttons存放着工具条中按钮的列表。

RowCount指示着工具条的行数。

 

89)问:C++Builder为什么要采用图标列表的方式来管理工具条上的图标呢?

答:因为这样可以集中统一地管理大量的图标,从而大大地减轻了程序员的负担。

答:要为应用程序建立工具条,可以按照下面的步骤:

(1)从选项卡Win32中选择工具条组件,放置在窗体上。

注意,刚放置在窗体上的工具条组件一定是在窗体的顶部,因为这时工具条的Align属性被设置为alTop。

(2)在窗体上增加两个ImageList组件,并为这些组件引入图标。

(3)将一个ImageList组件赋予工具条的属性Images,另一个赋予工具条的属性DisabledImages。

(4)用鼠标右键单击工具条,在弹出菜单中选择New Button。

这时将在工具条上出现一个按钮,这个按钮无标题。这是因为工具条的ShowCaption属性被设置成了False。实际上这个按钮有一个缺省的标题ToolButton1。

 这个新创建的按钮与我们前面介绍的按钮都不一样,它是一个TTtoolButton组件。

(5)选中工具条上的按钮,把按钮的ImageIndex属性改为所需要图标的索引号。这个图标实际上是存放在ImageList组件中的。

(6)重复第四步和第五步,在工具条上创建更多的按钮。这样一个工具条就建立了。

 

90)问:工具条上的按钮好像与普通按钮不一样,请问它有些什么特点呢?

答:工具条上的按钮是一个TToolButton组件。它包括一些与工具条有关的特性,可以简化工具条上按钮的配置,并增加一些显示特性。TToolButton有这样一些重要属性。

AllowAllUp属性允许一个组中的按钮同时全部处于未选中状态。缺省值是False。

Down属性指定按钮是否被选中。在设计期间把该属性设置为True,可以使按钮初始化为选中状态,缺省值为False。

DropDownMenu属性把一个弹出菜单与按钮相连。

ImageIndex属性指定出现在按钮上的图标的索引号。

Indeterminate属性确定按钮是否处于一种既不是选中也不是未选中的中间状态。缺省值为False。

Wrap属性强迫这个按钮是这一行的最后一个按钮,下一个按钮从下一行开始。缺省值为False。

 

Style属性用来确定按钮的样式,它可以有五种不同的取值,这五种取值分别表示五种不同样式的按钮。

tbsButton表示按钮正常显示与一般的加速按钮一样。

tbsCheck表示单击这种类型的按钮时可以切换Down属性。一旦你选中了该按钮,那么按钮将保持选中状态直到再次单击。

tbsDropDown表示按钮显示成一个向下的箭头。

tbsSeparator表示按钮显示成工具条上的一个空格。

tbsDivider表示按钮显示成工具条上的一个垂直线段。

Grouped属性确定是否允许连续的多个tbsCheck类型的按钮组成一组。缺省值是False。如果连续的多个按钮,每个按钮的Grouped属性都设置为True,同时Style属性都设置为tbsCheck,那么这些组件一次只能选取一个。选中其中一个按钮将使其他按钮变成未选中状态。

 

91)问:如何用加速按钮创建工具条?

答:工具条的另一种创建方法是使用面板组件+加速按钮SpeedButton的方法。加速按钮在前面曾经提到过,它与位图按钮很相似,也使用属性Caption和Glyph放置文本和图标,不过加速按钮还有一些属性是比较特殊的。

下面我们先介绍加速按钮的属性:

GroupIndex:通过GroupIndex属性可以使加速按钮像单选按钮那样使用。也就是说,把多个单选按钮的GroupIndex属性赋予相同的值以便组成一组,这样这个组中的按钮一次只能有一个按钮可以被按下,当你按下一个按钮时,其他按钮就会弹起。需要注意的是GroupIndex必须大于0。如果GroupIndex属性等于0,那么表示该按钮是一个普通的加速按钮。

Down:属性值可以控制按钮是否处于按下状态,当该属性值为True时,按钮处于按下状态。你可以在设计时把属性Down设置为True,这样当程序运行时,按钮一开始就处于按下状态。

AllowAllUp:这个属性用来指定一个组中的所有加速按钮是否可以同时处于未被按下的状态。当该属性为True时,单击该组中被按下的按钮,这个按钮会弹起。当该属性为False时,单击该组中被按下的按钮,这个按钮不会弹起。

如果你比较一下加速按钮和TToolButton组件就会发现,它们都有上面介绍的这三种属性,只不过TToolButton组件中使用属性Grouped来完成类似于GroupIndex的功能。

 

92)问:用加速按钮设计工具条与用Toolbar组件相比有什么不同?

答:用加速按钮设计工具条时必须首先在窗体上放置面板组件,而且应该把它的Align属性设置为alTop(因为工具条一般都放在窗口的顶部)。然后在面板组件上放置加速按钮。

一般要利用按钮的Caption和Glyph属性为加速按钮设置文本和图标。如果这些按钮只是像普通按钮那样操作的话,那么这样设置就可以了。但是如果这些按钮要像单选按钮那样使用,那么还必须对GroupIndex属性进行设置。

93)问:那如何用加速按钮来设计工具条呢?

答:我们要用到Additional页的可控组件ControlBar、Speedbutton与Win32页面中的ToolBar。下面来看一下他的实现:

①双击ControlBar,把她放到窗体中;

②双击ToolBar,并将其放到ControlBar上;

③在ToolBar上添加SpeedButton;

④选中一个SpeedButton,在Object Inspector中找到Glyph属性,来选择图片。

*SpeedButton的Flat属性改为true,则按钮为透明的

*AutoSize改为true,则容器大小随容件变化

 

 

 

 

12.状态条组件

94)问:在Windows编程中,状态条可以显示程序当前的一些状态信息,是一个很有用的部件,它也被广泛应用在许多程序中,请问,C++Builder是怎样编写状态条的?

答:状态条StatusBar实际上是由一组状态面板组成的,通常显示在应用程序窗口的底部,它的功能主要是显示一些提示信息和状态信息。例如,C++Builder的代码编辑器底部就显示了一个状态条,而且显示了多个状态面板。

状态条可以只显示一个状态面板,也可以显示多个状态面板。当显示多个状态面板时,状态条被分割为几个部分,每个部分都有自己的Text属性,通过这个属性就可以在状态条显示信息了。

如果要在状态条上显示多个状态面板,就需要把状态条的SimplePanel属性设置为False,否则只能显示一个状态面板。

如果状态条只需要显示一个状态面板,那么只要简单地在窗体上放置状态条就可以了。这时窗体上的文本保存在属性SimpleText中。如果要显示多个状态面板,那么就需要使用面板编辑器创建多个状态面板。单击属性Panels的Value列中的省略号按钮(或者双击菜单条),就可以打开状态面板编辑器。

单击编辑器上的按钮Add可以增加状态条上的状态面板。单击面板编辑器中新创建的状态面板,在对象编辑器中就会列出该状态面板的属性。

 

95)问:可以看出状态条上的状态面板有五个属性,他们分别有什么作用呢?

答:Alignment属性用来确定面板中所显示文本的对齐方式。它的可能值为:taLeftJustify表示左对齐、taRightJustify表示右对齐和taCenter表示居中对齐。缺省值为taLeftJustify。

Bevel用来确定面板的样式。共有三种方式,None表示面板处于平整的状态;Lowered表示面板下沉;Raised表示突起。

Style属性用来确定在面板中显示的内容是Text文本还是OwnerDraw自绘制图形方式。如果要在面板中作图,那么就需要编写OnDrawPanel事件处理过程。

Text属性用来保存面板中显示的字符串。

Width用来设定面板的长宽。

C++ Builder 初学问与答(十三) C++ Builder初学问与答(版权要求:本文仅授权优快云使用,另授权CCRUN转载,其他个人与网站不得转载、摘录,若有特别需求可与作者联系)第二部分:快速提高好久以来有不少朋友问我,《C++ Builder问与答》为什么不继续写了?我也一直在思考还应该写下去不?CBX的推出,加之宝兰宣布不在出新的CB版本,让我们这些一直喜爱CB的人不清楚下一个方向到底在何处?当然真的希望CB会继 阅读详情

相关推荐

C++ Builder 初学问与答(十四)

(版权要求:本文仅授权优快云使用,另授权CCRUN转载,其他个人与网站不得转载、摘录,若有特别需求可与作者联系) (4)利用C++Builder集成开发环境中的视图“View”菜单,我们可以显示或隐藏C++Builder集成开发环境中的不同的部分,也可以用于打开属于集成调试器的窗口。 “Project Manager”菜单项用于显示工程管理器。“Object Insp

ch_builder的专栏 2597

【C++ Builder 11】选择文件夹的三种方式

RAD C++ Builder 通过SelectDirectory函数实现

weixin_48776540的博客 1815

C++ Builder 初学问与答(二)

2.文本输入组件11)问:如果要实现文本输入,在C++Builder中应该怎么办?答:C++Builder常用文本输入组件来实现,常用的文本输入组件有Edit、MaskEdit 、Memo和RichEdit。他们的主要不同在于Edit和MaskEdit用于输入单行文本,而Memo和RichEdit可以输入多行文本。此外Label组件也可用来进行文本显示。Edit和MaskEdit是一个

ch_builder的专栏 2705

C++ Builder 11.3 的新特性

总的来说,C++ Builder 11.3 引入了许多新的特性和改进,旨在提高开发者的工作效率和代码质量,帮助开发者更好地构建现代化的应用程序。

过客2019 2514

MacOS M芯片部署ComfyUI:从环境排雷到插件生态一站式指南

本文为MacOS M系列芯片用户提供了一份详尽的ComfyUI部署指南。文章深入剖析了因架构差异导致的常见安装报错根源,并给出了基于MPS后端的正确PyTorch安装命令。从创建纯净Python虚拟环境、分步安装依赖,到验证GPU加速,手把手指导完成部署。同时,还推荐了包括管理器、汉化在内的必备插件,以完善使用生态,帮助用户一站式解决从环境搭建到效率提升的所有问题。

weixin_29261711的博客 995

在WebView中对第三方H5页面的文本密码框添加自定义随机键盘

前言: 首先介绍一下这个需求的背景,由于公司是涉及到金融行业的需要与银行对接资金存管。出于保密性这里不直接列出公司名字和银行名字。从2018年国家对金融行业大整改以来,为了能够顺利通过备案,我们也跟着政府的脚步一步一步走向合规。 好了,大致就是因为要通过备案,必须把这个需求实现,否则将不会通过。 需求内容就是,当客户端有关资金交易的时候,会通过加密数据以及秘钥的方式把第三方银行的页面(充值、...

比较喜欢、笑的博客专栏 1586

C++11特性(详细版)

C111、C11优势2、列表初始化3、变量类型推导1、为什么需要类型推导2、decltype类型推导(了解)为什么需要decltypedecltype4、final 与 overridefinaloverride5、默认成员函数控制1、显示缺省函数2、删除默认函数(禁止调用)6、右值引用与移动语义1、左值引用和右值引用1、什么是左值?什么是左值引用?2、什么是右值?什么是右值引用?2、左值引用与右值引用比较3、右值引用使用场景和意义7、完美转发8、新的类功能 1、C11优势   相比C++98/03,C++

weixin_46873777的博客 3万+

Jitsi中的Prosody(谐音:破扫敌)介绍

凭借其灵活的插件系统、强大的安全性和出色的性能,Prosody 成为许多企业和开发者构建定制化通信解决方案的首选。在 Jitsi 的多方视频会议场景中,Prosody 不仅处理基本的信令任务,还需要与其他组件(如 Jitsi Videobridge)协作,确保视频流的正确分发和控制。Prosody 提供了丰富的插件系统,允许开发者通过模块扩展其功能。Prosody 就是一个实现 XMPP 协议的服务器,它支持 XMPP 协议的标准功能,如消息传递、群组聊天、传送状态信息等,并提供了高效、可扩展的服务。

江左散人的专栏 1167

在Windows11下安装 C++Builder

在之前, 我使用 WinMount 软件挂载 C++ Builder 安装文件, 可以比较顺利的安装这款开发软件。不过, 今天在 Windows11中安装 C++ Builder 的时候, WinMount 软件在挂载文件的过程中总会出错。后来发现, 可以直接使用 Windows11 中右键中的文件挂载功能, 可以将 C++ Builder安装文件挂载成 Z 盘。使用这个方法, 现在能够成功的安装 C++ Builder 软件了。说实在的, C++ Builder开发环境, 是我使用最长的 一款。

TSINGHUAJOKING 1764

从零搭建AGV避障系统:我用激光雷达+树莓派视觉模块踩过的那些坑

本文分享了基于树莓派与国产激光雷达从零搭建低成本AGV避障系统的实战经验。针对复杂仓库环境,详细剖析了激光雷达数据噪声、视觉模块算力瓶颈、IMU漂移等核心挑战,并提供了多传感器融合、软件架构设计与避障决策的具体解决方案,为中小型自动化改造项目提供了宝贵参考。

git9versioner的博客 985

零基础学simulink仿真建模--使用Simulink来构建一个混合动力无人机中燃料电池与锂电池协同控制的仿真模型

延长飞行时间:燃料电池的能量密度高于锂电池,适合长时间稳定供电。提高功率密度:锂电池能够快速响应瞬时高功率需求,比如起飞和加速阶段。优化能源管理:通过有效的能量管理系统,可以根据实际需求动态调整燃料电池和锂电池的工作状态,从而提高整体效率。通过上述步骤,我们简要介绍了如何基于Simulink实现混合动力无人机中燃料电池与锂电池协同控制的仿真模型。

amy_mhd的博客 191

C++ Builder 初学问与答 (十一)

11.工具条组件  87)问:工具条是Windows编程经常要用的, C++Builder能不能实现这个功能呢? 答:当然可以,工具条是由许多具有图形的按钮组成的,这些按钮被分隔符分隔成许多组,每个组都能够完成特定的工作。工具条上的按钮具有与位图按钮相似的特性——可以拥有多个位图,当按钮处于不同状态时,例如按下、失效等,将显示不同的位图。以前C++Builder制作工具条的方法是通过把加速按钮

.NET快速开发框架 1462

刷机维修进阶教程-----adb禁用错了系统app导致无法开机 如何保数据无损恢复机型

在刷机维修过程中 。我们会遇到一些由于客户使用adb指令来禁用手机app而导致手机无法开机进入系统的故障机型。通常此类问题机型有好几种解决方法。但如果客户需要保数据来恢复机型。其实操作也是很简单的.还有类似误删除应用导致不开机等等如何保数据。  通过博文了解💝💝💝    1💝💝💝----adb禁用或者删除系统app导致无法开机的几种解决方法 2💝💝💝----如何保数据来无损恢复机型 3💝💝💝----其他保数据解决系统类故障无法开机的步骤解析

小马哥的专栏 1356

C++ Builder 初学问与答 (十一) (转)

C++ Builder 初学问与答 (十一) (转)[@more@]11.工具条组件 87)问:工具条是windows编程经常要用的, C++Builder能不能实现这个功能呢? 答:当然可以,工具条是由许多具有图形的按钮组...

ciya3282的博客 115

农作物生长模型:数学建模与实战案例

在本篇博客中,我们介绍了农作物生长模型的基本原理,并结合Matlab代码和实战案例,演示了如何应用数学建模技术进行农作物生长模型的研究与应用。农作物生长模型在农业领域具有重要意义,希望本篇博客能帮助读者更好地理解农作物生长模型的原理和应用,并在实际农业生产中取得更好的效果。

YOLO 2735

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C++ Builder 初学问与答(一)

C++ Builder初学问与答(版权要求:本文除了经过优快云授权或作者同意,不得转载)     一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。本想不写了,但觉得这些东西留下来能做什么呢?还是用另一种方法来重新演译我的思维吧,最近有些忙,那几篇没有写完的文章,我也会尽快写完的,至于《

ch_builder的专栏 4211

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C++ Builder 初学问与答(四)

4.列表类组件31)问:当我需要使用多个选项的时候,使用单选按钮或复选框来进行选择不是很恰当,因为在窗体上放置大量的按钮既不利于布局的美观,又会消耗大量的系统资源,C++Builder有什么解决办法吗?答:可以使用列表框(ListBox、CheckListBox)或组合框(ComboBox)这两类最常用的列表组件。32)问:列表框有那些主要属性?答:列表组件ListBox在缺省情况

ch_builder的专栏 2522

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++ Builder 初学问与答 (十二)

(本系列文章,仅供优快云使用,另授权CCRUN转载,其他个人与网站不得转载、摘抄,如需使用请与作者或优快云联系) 13.对话框组件     96)问:怎样编写文件打开、保存等对话框?  答:C++Builder为我们提供了许多常用的对话框组件,这些对话框组件都放在组件模板的Dialogs选项卡中,例如Font,Color,Open和Print对话框。其中OpenDialog对话

ch_builder的专栏 2556
上一篇: C++ Builder 初学问与答 (十)
下一篇: C++ Builder 初学问与答 (十二)
ch_builder
博客等级 码龄25年 76粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值