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

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

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

 

13.对话框组件

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

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

 

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

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

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

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

 

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

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

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

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

在窗体上放置OpenDialog组件。

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

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

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

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

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

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

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

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

现在,我们输入文本文件和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与打开对话框非常相似,至于OpenPictureDialogSavePictureDialog就不用多说了。其它象字体对话框FontDialogFont属性;颜色对话框ColorDialogColor属性;查找对话框FindDialogFindText。这里就不用多说了,看一下就明白了。

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

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

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

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

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

参数DlgTypeTMsgDlgType类的变量,它用来指定对话框的显示特征。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:包含了mbYesmbNombCancel元素;

mbOKCancel:包含了mbOKmbCancel元素;

mbAbortRetryIgnore:包含了mbAbortmbRetrymbIgnore元素。

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

 

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的专栏 3342

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

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

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

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

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

ch_builder的专栏 2119

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

C++ Builder 多线程学习

myyounglife的博客 1718

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开启命令窗口。

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

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

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

.NET快速开发框架 1662

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

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

ciya3282的博客 148

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

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

ch_builder的专栏 4203

C++实现设计模式——Builder模式

C++实现设计模式——Builder模式 建造者模式定义 建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 举例 举一个通俗的例子: 我们大家都玩游戏吧,每个角色会有很多属性,即构造参数,有一些是构造必需参数,如id,name,有一些是可以用默认的值,比如hp,level等

yxh_1_的博客 3365

C++ builder基础

C++ builder 简介 C++ Builder是由Borland公司推出的一款可视化集成开发工具。C++ Builder具有快速的可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面。 Inprise(原Borland)公司推出的Turbo C、Turbo C++ 、Borland C++ 以及Borland C++ Builder,无不是 C/C++ 编程者所钟爱的编程工具,而且每一个都称得上经典之作,Delp

weixin_43820463的博客 9555

C++设计模式之生成器模式(Builder

生成器是一种创建型设计模式,使你能够分步骤创建复杂对象。该模式允许你使用相同的创建 代码生成不同类型和形式的对象。假设有这样一个复杂对象,在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中;甚至还有更糟糕的情况,那就是这些代码散落在客户端代码的多个位置。如果为每种可能的对象都创建一个子类,这可能导致程序过于复杂:例如, 我们来思考如何创建一个房屋(House)对象。

波风水门 2619

[原创]“C++ Builder 12 VCL“与“VC++ 2022 MFC“界面开发的细节极致拉扯, 最终“C++ Builder 12 VCL“击败对手.

C++ Builder 12的界面开发效率毫无人性的碾压VC++ 2022 MFC. C++ Builder 12只需一个拉控件步骤, 就自动完成对控件ID的命名和类绑定, 根本不需要像VC++ 2022 MFC这样愚蠢的手动方式去初始化一个控件的绑定信息. 另外代码更是非常的简练, 直接"="赋值, 就完成了char*的复杂转换. 但是VC++ 2022 MFC完全做不到, 需要显式的一层层转换.

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

c++ builder 中的 XMLDocument 类详解(12) -关于 XML 属性

//---------------------------------------------------------------------------    #ifndef Unit1H #define Unit1H //---------------------------------------------------------------------------

技术资料收集站 682

C++ Builder初学问与答12

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

cyp0207的专栏 893
上一篇: C++ Builder 初学问与答 (十一)
下一篇: BCB中实现动态创建组件
ch_builder
博客等级 码龄24年 76粉丝 58原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值