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

美国Embarcadero公司正式发布2023 RAD Studio Delphi C++ Builder 12 Athens Embarcadero 非常高兴地宣布发布 RAD Studio 12 Athens 以及 Delphi 12 和 C++Builder 12。RAD Studio 12 Athens 版本包含令人兴奋的新功能,为该产品的未来奠定了基础。 阅读详情

(本系列文章,仅供优快云使用,另授权CCRUN转载,其他个人与网站不得转载、摘抄,如需使用请与作者或优快云联系)

 

13.对话框组件

     96)问:怎样编写文件打开、保存等对话框?

  答:C++Builder为我们提供了许多常用的对话框组件,这些对话框组件都放在组件模板的Dialogs选项卡中,例如Font,Color,Open和Print对话框。其中OpenDialog对话框组件最具有代表性,只要掌握了它的用法,那么你也就会使用其他的对话框组件了。

 

      97)问:对话框组件的特性有哪些特性呢?

  答:对话框组件是一种不可见组件。当你把它放在窗体上时,它是一个大小不变的图形按钮,当程序运行时,对话框组件不会立刻显示,而必须使用每个对话框都有的Execute方法,使对话框显示出来。

C++Builder提供的对话框大多数是有模式对话框。这种对话框要求首先必须响应该对话框,然后才能继续进行工作。所谓响应对话框就是你必须单击OK或者Cancel按钮,使对话框返回一个值。当用户单击对话框上的按钮OK时,返回True,单击Cancel按钮返回False。用户可以根据返回值的不同进行不同的处理。

非模式的对话框使你在响应对话框之前可以完成其他的工作,不必非要首先响应对话框。这类对话框有:FindDialog,ReplaceDialog等。

 

98)问:能更细点的说明对话框组件的用法吗?

答:我们就编制一个文本阅读器来说明如何使用文件打开对话框。

打开一个新的窗体,我们放上一个按钮组件和一个Memo组件,将Memo的ScrollBars属性设置为ssBoth,使得Memo能够显示垂直和水平的滚动条。

选中Lines属性,删除里面的文本。

在窗体上放置OpenDialog组件。

选中OpenDialog组件,可以看出,OpenDialog有这样一些主要的特性

FilrerIndex属性用来指定每次打开对话框所用的缺省过滤器。

DefaultExt属性是一个扩展名,当用户在文件编辑框中输入的文件名没有带扩展名时,对话框会用它作为文件缺省的扩展名。

InitialDir属性用来设置对话框打开时显示的目录。

FileName属性用来返回最近一次选中的文件的完整路径名。

Filter属性,这个属性用来设计在对话框的文件列表中将列出哪些类型的文件。

OpenDialog对话框提供了一个专门的编辑器来编辑属性filter,单击属性Filter的value列中的省略好按钮就可以打开这个编辑器。

左边用来输入过滤器的名称,右边用来输入文件扩展名。

现在,我们输入文本文件和C++文件的过滤器。这样,在每次打开对话框时候,在文件类型下拉列表中将显示过滤器的名称。

双击文打开按钮,输入这样一段代码:

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

        if(OpenDialog1->Execute())//首先执行打开文件对话框函数,这时,打开文件对话框才显示出来。如果执行成功,这个函数返回true,否则返回false

        {

                Memo1->Lines->Clear();//把Memo中的内容清掉

                Caption=OpenDialog1->FileName; //获得用户选择的文件的路径名,并将它设置成窗体的标题。注意,因为是在Form1窗口(容器)中进行的操作,所以Caption前省了Form1,当然你可以加上

                Memo1->Lines->LoadFromFile(OpenDialog1->FileName);// 调用文本装入函数从文件中装入文本,并显示在编辑框中

         }

}

//---------------------------------------------------------------------------

 

99)问:其它对话框的各有什么重要属性?

答:保存对话框SaveDialog与打开对话框非常相似,至于OpenPictureDialog、SavePictureDialog就不用多说了。其它象字体对话框FontDialog的Font属性;颜色对话框ColorDialog的Color属性;查找对话框FindDialog的FindText。这里就不用多说了,看一下就明白了。

100)问:对话框组难道就只能用上面说的那些组件吗?要是有,能介绍一下吗?

答:在C++ Builder集成开发环境的可视化组件中库中,给应用程序开发员提供了一系列的标准的对话框函数。我们可以直接调用这些函数来显示一些标准的对话框。

这类函数还真不少,但我们只要掌握以下五个就足够了J

extern PACKAGE int _fastcall MessageDlg(const AnsiString Msg,TmsgDlgType DlgType,TmsgDlgButtons Buttons,int HelpCtx):用来在计算机屏幕中央显示对话框。

其中,参数Msg是指定要对话框中显示的字符串。

参数DlgType是TMsgDlgType类的变量,它用来指定对话框的显示特征。TmsgDlgType是一个集合,它可以取以下的值:

mtWarning:对话框中包含黄色的惊叹符号;

mtError:对话框中包含红色的惊叹符号;

mtInformation:对话框中包含蓝色的“I”符号;

mtConfirmation:对话框中包含绿色的问号;

mtCustom:对话框中不包含位图符号,标题名称为应用程序名称。

参数Buttons是用来指定对话框中包含的按钮的类型,它是一个集合,可以是以下若干个元素的组合:

mbYes:对话框含有“Yes”按钮;

mbNo :对话框含有“No”按钮;

mbOK:对话框含有“OK”按钮;

mbCancel :对话框含有“Cancel”按钮;

mbAbort :对话框含有“Abort”按钮;

mbRetry :对话框含有“Retry”按钮;

mbIgnore :对话框含有“Ignore”按钮;

mbAll :对话框含有“All”按钮;

mbNoToAll :对话框含有“NoToAll”按钮;

mbYesToAll :对话框含有“YesToAll”按钮;

mbHelp :对话框含有“Help”按钮.

C++ Builder还专门定义了三个常用的按钮组合:

mbYesNoCancel:包含了mbYes、mbNo和mbCancel元素;

mbOKCancel:包含了mbOK和mbCancel元素;

mbAbortRetryIgnore:包含了mbAbort、mbRetry和mbIgnore元素。

参数HelpCtx用来指定当用户选择帮助时,帮助系统中的上下文编号。这个函数根据用户选择的按钮,将返回相应的值,它有以下返回值:mrNone、mrAbort、mrOK、mrRetry、mrNo、mrCancel、mrIgnore、mrAll。

 

extern PACKAGE void _fastcall ShowMessage(const AnsiString Msg):这个函数用来显示一个对话框,这个对话框中包含一个“OK”按钮。其中对话框中显示的内容由参数Msg来确定。

 

 

extern PACKAGE AnsiString _fastcall InputBox(const AnsiString Acaption, const AnsiString Aprompt, const AnsiString Adefault):这个函数用来在计算机屏幕上显示一个对话框,这个对话框有一个文本编辑框,可以用来接收用户输入的字符串信息。

Acaption:用来指定对话框的标题;

Aprompt:用来指定对话框中显示的内容;

Adefault:用来指定对话框打开时在编辑框中显示的内容。

 

 

extern PACKAGE bool _fastcall LoginDialog(const AnsiString Acaption, AnsiString &AuserName, AnsiString &AuserName):这个函数用来显示一个标准的登录对话框,用来连接一个数据库服务器,其参数分别为对话框中数据库的名字、用户输入的用户名和密码。

 

extern PACKAGE bool _fastcall SelectDirectory(const AnsiString Caption,const WideString Root,AnsiString &Directory)或extern PACKAGE bool _fastcall SelectDirectory(AnsiString &Directory,TselectDirOpts Options,int HelpCtx):这个函数用来显示一个让用户输入目录名称的对话框。其中:

第一种语法的参数Caption用来指定对话框的标题;Root用来指定从哪个根目录开始浏览;参数Dircetory用来确定用户选择的目录。这个语法不能改变当前的目录。

第二种语法的参数Options是一个集合,它可以由以下几个元素组合而成:

sdAllowCreate:允许用户输入一个不存在的目录名字,但并不创建这个新目录;

sdPerformCreate:它必须和sdAllowCreate配合使用,当用户输入一个不存在的目录名时,对话框将创建这个目录;

sdPrompt:它必须和sdAllowCreate配合使用,当用户输入一个不存在的目录名时,将出现消息对话框,询问用户是否创建这个新目录。若用户选择是,在包含sdPerformCreate元素时将创建这个新目录,若没有包含sdPerformCreate元素,将不创建目录。

 

《基础入门》100问与答到这就结束了,由于原文是在WORD下写的,帖到这里时有时会出现一些错误,由此给编辑带来很多不必要的劳动,所以要感谢编辑的辛苦工作!J

注:本文所有例程均在XP系统、BCB6下编译通过。

 

(全文未完)

使用 C++ Builder 12.2中的 Visual Assist 增强重构:干净代码和旧代码的新功能 在最新版本的 RAD Studio中,C++ Builder 配备了强大的工具,可以使您的代码更简洁,工作流程更高效。其中一个突出的功能是 Visual Assist 的增强集成,它现在包括三个特别有用的重构工具:Introduce Variable、Extract Method和Create from Usage。 对于在测试驱动开发 (TDD) 环境中工作或处理更具挑战性的重构遗留代码任务的任何人来说,这些新功能都是一股清新的空气。让我们探讨一下这些工具如何提供帮助,无论您是编写新测试还是处 阅读详情

相关推荐

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

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

ch_builder的专栏 3348

[原创]仅需小小的改变,C++ Builder 12的代码完成提示即可完美工作.

将近20年的期盼, C++ Builder 12终于在2023年11月08日发布了. 为什么我那么激动? 因为C++ Builder才是C/C++领域中真正意义的快速开发工具.

其实我不是代码教父,我只是猪头三 2842

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

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

ch_builder的专栏 2126

【C++】 C++ Builder 多线程学习(一)

C++ Builder 多线程学习

myyounglife的博客 1722

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

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

ch_builder的专栏 2597

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

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

ch_builder的专栏 2705

C++Builder 12.2终于可以直接编译OpenCV了

再于e:\RADStudio12Demos\CPP\CMake\中执行make-opencv.bat, 即可成功编译OpenCV了.由于OpenCV是一个巨大的函式库, 而且编译OpenCV之前要先编译vtk, 所以这将是一个耗时的工作, 例如在笔者这个缓慢笔电的虚拟机中已经编译了8个小时仍未完成, 希望各位能够很快的编译完OpenCV并且直接在C++Builder中直接使用, 而无需再做任何的转换了.2.请使用RAD Studio的Command Prompt开启命令窗口。

英巴卡迪诺中国官方博客 1457

树莓派4B+DroneKit实战:手把手教你用Python控制无人机飞行(附避坑指南)

本文提供了一份详尽的树莓派4B与DroneKit配置实战指南,涵盖从硬件选型、软件环境搭建到Python编程控制无人机的完整流程。文章重点解决了ARM架构下的兼容性问题、MAVLink通信配置及端口管理等常见难题,并附带了实用的避坑指南和代码示例,帮助开发者构建稳定可靠的无人机控制系统。

weixin_29056781的博客 410

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

 13.对话框组件96)问:怎样编写文件打开、保存等对话框?  答:C++Builder为我们提供了许多常用的对话框组件,这些对话框组件都放在组件模板的Dialogs选项卡中,例如Font,Color,Open和Print对话框。其中OpenDialog对话框组件最具有代表性,只要掌握了它的用法,那么你也就会使用其他的对话框组件了。  97)问:对话框组件的特性有哪些特性呢? 

.NET快速开发框架 1673

SOLIDWORKS无法获得下列许可 无效的使用许可号码(-8,544,0) 解决办法大全

SOLIDWORKS无法获得下列许可 无效的使用许可号码(-8,544,0) 解决办法大全。版本:SolidWorks2021。电脑:惠普战66四代。软件安装不困难!

qq_43596278的博客 11万+

YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操

可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。

一键难忘的博客 4051

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

C++ Builder 初学问与答 (十二) (转)[@more@](本系列文章,仅供优快云使用,另授权CCRUN转载,其他个人与网站不得转载、摘抄,如需使用请与作者或优快云联系) 13.对话框组件 96)问:...

ciya3282的博客 152

YOLOv9改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制

这篇文章带来一个经典注意力模块的汇总,虽然有些模块已经发布很久了,但后续的注意力模块也都是在此基础之上进行改进的,对于初学者来说还是有必要去学习了解一下,以加深对模块,模型的理解。

Limiiiing的博客 2894

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

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

ch_builder的专栏 4211

第7章: MMU notifier在AMD GPU驱动中的应用

AMD GPU驱动利用MMU Interval Notifier机制实现共享虚拟内存(SVM)和异构内存管理(HMM)。通过分析AMDGPU内存架构(VRAM、GTT、Userptr)和Buffer Object设计,重点探讨了Userptr零拷贝机制如何依赖MMU notifier保持CPU/GPU内存一致性。HMM框架进一步实现统一地址空间和透明页面迁移,AMDGPU通过amdgpu_hmm.c实现两种invalidate回调(GFX和HSA模式),处理不同场景下的内存失效同步问题。

图形/计算GPU的驱动与虚拟化技术分享园地 2473

003、高通骁龙Spectra ISP架构深度解析:IFE/BPS/IPE流水线与Chromatix调优实战

摘要: 本文深入解析高通骁龙Spectra ISP架构,重点剖析IFE、BPS、IPE三阶段的流水线协作机制与Chromatix调优实战。通过夜景预览"水波纹"案例,揭示HDR对齐与TNR运动估计的关联性问题,指出ISP调优需关注模块间的时序与带宽约束。文章详解各模块核心功能:IFE负责RAW域处理(HDR合成/校正),BPS专注降噪与细节增强,IPE进行YUV域精处理。针对Chromatix调优,强调参数与寄存器映射关系,并给出LSC网格密度、TNR运动灵敏度、LTM光晕等典型问题的解决方案。最后提出实用

zzfmlxs的博客 233

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

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

ch_builder的专栏 2522

YOLOv9改进,YOLOv9添加CBAM注意力机制

CBAM是一个简单而有效的注意力模块,用于前馈卷积神经网络。给定一个中间特征图,我们的模块按顺序推断两个独立维度(通道和空间)的注意力图,然后将注意力图乘以输入特征图以进行自适应特征细化。由于 CBAM 是一个轻量级的通用模块,因此它可以无缝集成到任何 CNN 架构中,开销可以忽略不计,并且可以与基础 CNN 一起进行端到端训练。论文链接:(CBAM论文)

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 858

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

(版权要求:本文仅授权优快云使用,另授权CCRUN转载,其他个人与网站不得转载、摘录,若有特别需求可与作者联系) (7)在C++Builder集成开发环境中,还有Component菜单。在组件菜单下的菜单命令是有关建立、安装、重建组件的菜单项。其中,“New Component”菜单项打开组件向导建立新组件。“Install Component”菜单项安装新的组件。“

ch_builder的专栏 2496

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

作者:董维春 网名:ch_builder(版权要求:请务必尊重知识产权,未经授权不要转载、摘录)25)问:控件是怎样处理拖曳的呢?答:当控件接受被拖曳的对象后会产生OnDragDrop事件,我们需要对这个事件进行响应,在对象观察器中双击控件的OnDragDrop事件域,生成它的处理模板。       加入这样一段代码,第二条语句判断被拖拽的对象是不是自己,否则不接受拖拽第三

ch_builder的专栏 3091

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

53)问:能介绍一下TTreeNodes与TTreeNode?答:在BCB中,树状视图的节点是通过TTreeNodes对象来管理的,通过这个对象可以对树状视图进行动态的增加、删除、插入、移动节点等操作。而每一个节点都是一个TTreeNode对象。TTreeNode的主要属性和函数:Count:这个属性用来返回某个节点所拥有的子节点的数目。它不包括其子节点。Item:其声明为:_pr

ch_builder的专栏 2630

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值