第九章各種對話方塊的建立

Download Report

Transcript 第九章各種對話方塊的建立

基础综合 各种对话框的建立
窗口接口可以说是最友善的人和计算机间的沟通接口,
然而对话框就好像是计算机和使用者之间的对话通道。
开档案有开档案的方式、存盘有存盘的接口、打印机设
定、字型选择、寻找字符串、置换字符串等等,在
Win32的环境中,这类的对话框实在是太多了。在这一
章我们将带领大家进入设计对话框的世界。
大纲
•
•
•
•
•
•
•
•
•
•
6-1 Open / Save Dialog
6-2 Open / Save PictureDialog
6-3 FontDialog
6-4 ColorDialog
6-5 PrinterDialog
6-6 PrinterSetupDialog
6-7 FindDialog
6-8 ReplaceDialog
6-9 对话讯息框的使用
本章习题
6-1 Open / Save Dialog
• 在窗口操作系统中,当使用者需要对某个档案作开启或关闭
的动作时,通常需要透过档案处理对话框来对档案作处理,
所以所谓的对话框,就是应用程序和使用者之间的交谈接口;
一个设计优良的对话框,会让使用者相当容易上手。下图是
档案开启的对话框。
Open / Save Dialog实作
• 上图的画面是一般在窗口系统下开启档案的对话框,我们可以看到中间主
画面是可选取的图示区,上方是目前目录名称以及一些目录基本功能,下
方则是选取文件名称和档案格式。这些功能我们都可以用BCB所提供的
OpenDialog组件一手包办实作,唯一需要我们自己设定的只有档案格式过
滤以及预设的开启路径。OpenDialog组件常见的属性如下:
属性(Properties)
型态原型
说明
DefaultExt
AnsiString
预设档案延伸档名
FileName
AnsiString
读入档案路径及名称
Filter
AnsiString
指定档案型态过滤方式
Option
Set
对话框功能的设定
Title
AnsiString
对话框标题的设定
Open / Save Dialog实作
• 当我们建立一个OpenDialog组件
时,在该组件的属性里有一个
Filter项目,这是提供设定档案
格式属性的过滤方式,设定该属
性可以让对话框在使用时挡掉不
需出现的格式的档案,其字段功
用说明如下:Filter Name字段填
入显示文字,而Filter字段填入
档案格式,如果档案格式超过一
个的话就用分号分开,一般在设
定Filter时我们会加入一个显示
所有档案的字段以提供对话框浏
览时可以看到所有的档案。
Filter设定窗口
6-2 Open / Save PictureDialog
• OpenPictureDialog组件提供了图文件预览的功能,相当适合
影像处理类的软件;目前提供的预览格式有JPEG、BMP、ICO
档案等图形档案格式。当然,BCB也提供了储存图文件的对话
盒SavePictureDialog组件来做图文件储存。
Open / Save PictureDialog属性介
绍
• 我们可以由上图看到和OpenDialog最大不同的地方,就是右
边有个预览区域,可以显示目前反白的图档内容,这个预览
区只有在被点选的档案是属于被支持的图档类型才有效。至
于 其 它 的 部 分 , 外 观 和 功 能 都 和 OpenDialog 差 不 多 。
OpenPictureDialog组件常见的属性如下:
属性(Properties)
型态原型
说明
DefaultExt
AnsiString
预设档案延伸档名
FileName
AnsiString
读入档案路径及名称
Filter
AnsiString
指定档案型态过滤方式
Option
Set
对话框功能的设定
Title
AnsiString
对话框标题的设定
6-3 FontDialog
• 一个功能齐全的文书编辑软
件,需要提供字型的调整功
能。BCB为了方便程序开发
者在设计此功能时的效率,
提供了FontDialog组件,其
更改字型的对话窗口可让使
用者以直觉的方式来更改字
型。右图为字型对话盒。
更改字型设定对话盒
FontDialog 属性介绍
• BCB有很多组件都含有Font属性,尤其是跟文字编辑相关的组件。但是字
型的设定往往都是相当的繁琐,如改变字体的类别、格式、大小、颜色
等等。如果是在程序执行的时候去修正改变,则对使用者而言将会是很
痛苦的事情。所以FontDialog就解决了这个问题,BCB中的FontDialog组
件的重要属性列表如下:
属性(Properties)
型态原型
说明
Device
TFontDialogDevice
设定字型来源
Font
TFont
使用者选定之字型
MaxFontSize
int
字号之最大值
MinFontSize
int
字号之最小值
Option
Set
对话框的功能设定
6-4 ColorDialog
• 在窗口应用程序中,常常会有编辑
软件可以选择图形或文字的颜色,
选择颜色的方式通常是一个色彩对
话框,如右图所示。BCB的所提供
的色彩对话框组件是ColorDialog,
我们可以指定所需改变的颜色为对
话框所选取的颜色作为编辑的动作。
ColorDialog 最 主 要 的 属 性 就 是
Color,当开启对话框后所选择的
颜色将会被设定在Color属性。
基本更改颜色设定对话盒
ColorDialog设定说明
• 在上图我们可以看到上半部是属
于Basic colors的部分,这是系
统提供的基本颜色,总共有56种。
在一般的选色情况下,这些系统
提供的基本颜色就可以了。但是
我们也可以自订一些自己想要的
颜 色 , 下 面 还 有 16 个 Custom
Colors的字段,让我们使用者可
以自定颜色,而设定颜色的方式,
就是依照基本色加上RGB色的调整。
自订色彩设定画面
6-5 PrinterDialog
• PrinterDialog主要功用在于提
供设定打印版面,即设定打印的
相 关 参 数 , 下 图 是
PrinterDialog对话框的显示接
口。使用者可以设定打印范围对
应到PrintRange属性,打印数量
对应到Copies属性,加入自动分
页功能对应到Collate属性,在
Options属性里又有提供很多参
数可以让我们自行设定,比如说
设定打印页面,是否打印到档案
等等。
打印设定画面
PrinterDialog属性介绍
• 以下为PrinterDialog属性的介绍及说明:
• Copies属性:型态为int,此属性为设定打印份数。
• FormPage属性:型态为int,此属性是设定打印的起始页,也就是说如果设定值为
1的话,打印时会从第1页开始打印。
• ToPage属性:型态为int,此属性是设定打印的最末页,也就是说如果设定值为5
的话,打印时会从起始页开始打印到第5页。
• MinPage属性:型态为int,此属性是设定打印的最小页数,当使用者输入的打印
设定里如果打印页数小于该属性的值,则程序就会发出错误讯息。
• MaxPage属性:型态为int,此属性是设定打印的最大页数,和MinPage刚好相反,
当使用者输入的打印设定里如果打印页数大于该属性的设定值值,则程序就会发
出错误讯息。
• PrintRange属性:PrintRange属性有三种设定值:prAllPages,prPageNums,
prSelection。当使用者选择Range时,程序员可以从FromPage和ToPage里读出真
正要打印的范围。
• PrintToFile属性:型态为布尔变量,此属性的设定决定是否将打印的结果打印成
为档案,默认值为否。
• Options属性:这是一个Set属性,该Set里又有包含很多布尔型态属性,也都是作
打印的设定。
6-6 PrinterSetupDialog
• PrinterSetupDialog主要是用来做打印机的设定,这包含了
打印机选择、纸张格式设定、走纸方式、以及打印方向等等,
下图就是一个PrintSetupDialog所显示的对话框。
打印机设定画面
6-7 FindDialog
• Find是帮助使用者搜寻文件里的字符串,常见的有文书编辑
软件、网页浏览器等需要显示大量文字时,这个功能就是不
可或缺的了。BCB所提供的FindDialog就是帮助程序开发者在
需要程序加入此功能时可以直接套用,FindDialog的重要属
性如下:
属性(Properties)
型态原型
说明
FindText
AnsiString
搜寻的字符串
Option
Set
对话框的功能设定
Position
Tpoint
搜寻起始位置
6-8 ReplaceDialog
• 我们需要大量的修改某一特定字符串成为另一个特定字符串
时,有的人会每次先Find出来再去修改,这种修改方式在修
改数量不大时还可以这样使用,但是如果修改的字符串数量
相当多,那么这种方式就很没有效率。所以在一些文字编辑
软件中,除了搜寻的功能外,一般都还会有一个类似叫取代
的功能。BCB提供了另一个对话框组件ReplaceDialog,可以
让我们大量的搜寻和修改。一般窗口Replace对话框如下图。
6-8 ReplaceDialog
• 上图中分别显示两个输入字段,第一为要搜寻的字符串,另一个为要更改
成的字符串。如图中所示,可以点选Find Next搜寻下一个”I love
Sally”字符串,确定要更改再点选Replace。如点选Replace All,则所
有的”I love Sally”字符串将会被改成”I love Sally and Jimmy”。
ReplaceDialog使用方式其实和FindDialog差不多,ReplaceDialog的重要
属性如下:
属性(Properties)
型态原型
说明
FindText
AnsiString
搜寻的字符串
Option
Set
对话框的功能设定
Position
Tpoint
搜寻起始位置
ReplaceText
AnsiString
更改后的字符串
6-9 对话讯息框的使用- MessageBox
•
6-9-1:MessageBox
在很多情况下,我们需要给使用者一些讯息,这些讯息可能
是一个提示、一个疑问、一个警告,甚置是一个错误。这些
讯息我们习惯用一个对话框来表达,而在这个对话框中可能
会有几个按钮、一个图标,以及一句讯息。别以为为了这个
对话框我们又要在新增一的Form、拖曳出按钮、贴上图标,
C++ Builder有一个MessageBox()函式,能够产生一个对话
框,这个函式的格式如下:
int MessageBox(const char * Text, const char * Caption, int Flags);
MessageBox说明
•
其中Text就是我们要在对话框中显示的字符串,Caption是这个对话框的
标题,Flag是这个对话框的格式,我们来看看Flag的用法:
数值
功能
0(MB_OK)
对话框包含OK按钮
1(MB_OKCANCEL)
对话框包含OK、CANCEL按钮
2(MB_ ABORTRETRYIGNORE)
对话框包含ABORT、RETRY、IGNORE按钮
3(MB_YESNOCANCEL)
对话框包含YES、NO、CANCEL按钮
4(MB_YESNO)
对话框包含YES、NO按钮
5(MB_RETRYCANCEL)
对话框包含RETRY 、CANCEL按钮
16
对话框包含错误警告图示
32
对话框包含疑问图示
48
对话框包含警告图示1
64
对话框包含警告图示2
0
将第一个按钮设为预设
256
将第二按钮设为预设
514
将第三按钮设为预设
6-9 对话讯息框的使用- InputBox
•
6-9-2:InputBox
另一种对话框 InputBox和MessageBox很像,只是它没有图
标,按钮也是预设的,而且它多了一个Edit组件。它的函式
格式也和MessageBox很像:
AnsiString InputBox(const AnsiString ACaption,
const AnsiString APrompt,
const AnsiString ADefault);
其 中 ACaption 变 量 为 标 题 , APrompt 为 提 示 讯 息 ,
ADefault 为 默 认 值 , 当 使 用 者 输 入 数 据 并 按 下 OK 后 ,
InputBox函式便会传回资料。
6-9 对话讯息框的使用- ShowBox
•
6-9-3:ShowBox
ShowBox函式格式如下:
void ShowMessage(const AnsiString Msg);
这个对话框只有一个参数Msg,就是对话框中的讯息,当使用者按下
OK后,程序就会继续执行,并不会有所影响。
ShowBox画面
本章习题
•
将本章第五节里所提到的小记事本范例,请将其功能建构完
整。
• 设计一个图片档案浏览程序,能够把同一目录下的图文件用
缩小图形预览。
• 利用对话讯息框,设计一个备忘录纪录和查询的系统。