登陆注册
16017000000020

第20章 对话框的使用与设计(1)

本章要点

对话框的分类

Delphi中的对话框

标准对话框的使用

对话框组件的使用

对话框的设计

对话框是Windows应用程序和用户进行信息交互的重要手段,几乎任何Windows应用程序都离不开对话框。

8.1对话框概述

顾名思义,对话框是Windows应用程序同用户进行对话的。应用程序可通过对话框向用户提供程序运行的状态信息,也可通过对话框接受用户输入的数据。

对话框可分为两种形式:模态对话框和非模态对话框(也有的资料称“模式对话框”和“无模式对话框”)。

模态对话框,是指在对话框被关闭之前,用户无法在该对话框和应用程序的其他窗口之间进行切换,就是说用户必须对该对话框做出选择并加以确认,程序才能继续运行。如常见的“打开文件”对话框就是典型的模态对话框。

非模态对话框,是指对话框被关闭之前,用户可以在该对话框和应用程序的其他窗口之间进行切换。如常见的“查找”对话框和“替换”对话框就是非模态对话框。

Delphi应用程序中使用的对话框有3种类型。

(1)Delphi预定义的标准对话框,通过函数或过程的调用来实现。

(2)Delphi提供的对话框组件。

(3)用户自己设计对话框。如前所述,对话框也是一种窗口,可以像设计窗口一样设计对话框。

本章就来介绍这些对话框的使用与设计。

8.2标准对话框

Delphi通过函数或过程预定义了两种标准对话框,分别用于信息的输入和显示,被称为输入框和消息框。

8.2.1输入框

输入框,是指带有一个用于简单字符串信息输入的编辑框、一个OK按钮和一个Cancel按钮的简单对话框。Delphi提供了两个函数用于产生输入框。

1.InputBox函数

调用函数InputBox,可以弹出输入框,如图8-1所示。

函数InputBox的声明格式为:

functionInputBox(constAcaption,Aprompt,Adefault:String):String;调用该函数,用3个字符串类型的常量作为输入参数,其中Acaption为对话框的标题(如图中“Login”),Aprompt为对话框中编辑框的提示信息(如图中“InputUserName”),Adefault为显示在编辑框内的默认输入字符串(如图中“guest”),该参数可为空,若为空,则编辑框没有缺省输入字符串。函数返回字符串。

产生如图8-1所示输入框的InputBox函数调用格式为:

InputBox(Login,InputUserName:,guest);调用函数后,弹出对话框,默认输入字符串显示在编辑框内,若用户单击【OK】按钮,输入框关闭,编辑框内当前字符串作为返回值;若用户单击【Cancel】按钮,输入框关闭,默认输入字符串作为返回值。

2.InputQuery函数

调用函数InputQuery,可以弹出输入框,如图8-2所示。

函数InputQuery的声明格式为:

functionInputQuery(constAcaption,Aprompt:String;varValue:String):Boolean;调用该函数,用两个字符串类型的常量、一个字符串类型的变量作为输入参数,其中Acaption为对话框的标题(如图中“Login”),Aprompt为编辑框的提示信息(如图中“InputUserName”),字符串变量值为显示在编辑框内的缺省输入信息(如图中“1111”),该变量可为空字符串,若为空,则编辑框没有缺省输入字符串。函数返回布尔值。

产生如图8-2所示输入框的InputQuery函数调用格式为:

调用函数后,弹出对话框,变量input的初值作为编辑框的默认输入,若用户单击【OK】

按钮,输入框关闭,函数返回True,编辑框内当前的字符串赋给变量input;若用户单击【Cancel】

按钮,输入框关闭,函数返回False,变量input保持调用函数前的值不变。

8.2.2消息框

消息框,是指用于显示提示信息的简单对话框,无需用户输入任何信息,只需通过消息框的按钮加以确认或取消。Delphi提供了若干过程或函数来产生消息框,这里介绍常用的几个。

1.ShowMessage过程

调用ShowMessage过程,弹出一个最简单的消息框,如图8-3所示。

过程ShowMessage的声明格式为:

procedureShowMessage(constMsg:String);调用该过程,只用一个字符串类型的常量作为参数,即显示的提示信息。

产生如图8-3所示消息框的ShowMessage过程的调用格式为:

showmessage(欢迎学习使用Delphi语言!);调用该过程,弹出消息框,单击【OK】按钮,消息框关闭,程序继续往下执行。

2.ShowMessagePos过程

调用ShowMessagePos过程,弹出一个如图8-3所示的消息框。

过程ShowMessagePos的声明格式为:

procedureShowMessage(constMsg:String;X,Y:Integer);调用该过程,用一个字符串类型的常量、两个整数类型常量作为参数,字符串类型的常量为显示的提示信息,两个整数类型常量确定消息框左上角的坐标。该过程和ShowMessage过程的作用完全相同,区别仅在于由X、Y指定弹出的消息框的位置。

3.MessageDlg函数

调用MessageDlg函数,弹出一个消息框,如图8-4所示。

单击按钮,对话框关闭。单击的按钮不同,函数的返回值不同,决定程序进行不同的处理。

函数MessageDlg的声明格式为:

functionMessageDlg(ConstMsg:String;AType:TMsgDlgType;AButtons:

TMsgDlgButtons;HelpCtx:Longint):Word;其中有以下4个调用参数。

ConstMsg:字符串类型常量,为显示的提示信息。

AType:决定消息框的类型,其取值及含义如表8-1所示。

调用中该参数用方括号括起,若有几个按钮,则按钮间用逗号分隔。

HelpCtx:决定当用户单击【Help】按钮时,显示哪一个帮助主题。

产生如图8-4所示消息框的调用函数的格式为:

MessageDlg(‘要退出程序吗?’,mtInformation,[mbYes,mbNo],0);8.3通用对话框组件

Windows应用程序支持多种标准对话框,如打开文件对话框、存储文件对话框等。Delphi将这些对话框封装成通用组件,方便了用户的使用。

Delphi提供了10种通用对话框组件,集中组织在组件模板的【Dialogs】选项卡上。

这些对话框组件都是不可见组件,即程序运行时,并不会自动显示对话框,而需要用户编写事件处理代码来显示。

另外,这些对话框大多是模态对话框,只有FindDialog(查找对话框)和ReplaceDialog(替换对话框)是非模态对话框。

8.3.1OpenDialog(打开对话框)组件

OpenDialog组件的图标为。

OpenDialog组件显示的【打开】对话框如图8-5所示。

在对话框中,先利用【查找范围】组合框和其右边的工具确定要打开文件所在的文件夹,在【文件类型】组合框中选择要打开文件的类型(若文件数量较少也可不选择文件类型),在列表框中选择要打开的文件,然后单击【打开】按钮,选定的文件即被打开。

1.OpenDialog组件的属性

OpenDialog组件的属性决定了对话框的特性。

1)DefaultExt属性

DefaultExt属性指定对话框打开文件的默认扩展名。当用户要打开的文件没有扩展名时,系统自动将用该属性设定的扩展名加上;当用户要打开的文件有扩展名时,则该属性设定的扩展名不起作用。该属性是直接输入型属性,其默认值为空。

2)FileName属性

FileName属性指定打开文件的包含全路径的名称。该属性为直接输入型属性,其默认值为空。

3)Filter属性

Filter属性决定对话框的【文件类型】组合框中列出的可选择的文件类型。使用对话框时,先从该组合框中选择要打开的文件的类型,这时对话框的列表框中只列出选择的文件类型,这种类型选择和文件列表的对应关系就是由Filter属性决定的。

Filter属性为编辑型属性,当单击对象检测器中该属性值栏右端的【…】按钮时,打开【FilterEditor】对话框,如图8-6所示。

在对话框的【FilterName】栏中输入组合框的下拉列表中列出的可选择的文件类型,【Filter】栏中输入这些文件类型对应的文件扩展名,如左边输入“AllFile”,右边输入“.”,左边输入“TextFile”,右边输入“txt”等。另外,一种“FilterName”可对应多种“Filter”,多种“Filter”以分号隔开,如对于“TextFile”,【Filter】栏可以输入“.txt;wps;doc”。

为了更清楚起见,左边也可以输入“AllFile(.)”、“TextFile(.txt)”等。

左边的内容是在对话框【文件类型】组合框的下拉列表中看到的可选择文件类型,右边才是对过滤器起作用的文件扩展名。

该属性在运行中设定时用如下格式:

其中第一个两侧分别为第一个过滤器的FilterName和Filter,第二个为两个过滤器的分隔符,第三个两侧为第二个过滤器的FilterName和Filter,依此类推,可以加更多的过滤器。

4)InitialDir属性

InitialDir属性决定对话框被打开时显示的初始路径。该属性为直接输入型属性,应输入选定的绝对路径,其默认值为空。

5)Options属性

Option属性决定对话框的外观和行为。该属性为集合型属性,包含若干个布尔型的子属性,其中主要子属性的值为True时的含义如表8-3所示。

6)Title属性

Title属性指定对话框标题栏中的文字。该属性为直接输入型属性,其默认值为空,而此时对话框标题栏中的文字为“打开”。若不为空,则标题为设定的文字。

2.OpenDialog组件的方法

OpenDialog组件的最常用方法是Execute,其声明格式为:

functionExecute:Boolean;

该方法打开对话框,若用户选择文件后单击【打开】按钮,则返回True;若用户单击【取消】按钮,则返回False。

如前所述,对话框是不可见组件,即程序运行时并不会自动显示对话框。要显示对话框,就要调用组件的Execute方法,其调用格式为:

OpenDialog1.Execute;

通常Execute方法放在if语句中,若打开文件成功,则其格式为:

ifOpenDialog1.ExecuteThenbegin执行打开文件的操作

end;

8.3.2SaveDialog(保存对话框)组件

SaveDialog组件的图标为。

SaveDialog组件显示的【另存为】对话框如图8-7所示。

在对话框中,先利用【保存在】组合框和其右边的工具确定要保存文件的路径,在【文件类型】组合框中选择要保存文件的类型,在【文件名】组合框在输入保存文件的名称(若列表框在有同名的文件,也可从列表框在选择),然后单击【保存】按钮,选定的文件被保存。

1.SaveDialog组件的属性

SaveDialog组件的属性与OpenDialog组件的属性绝大部分是相同的,只是Options属性中有一个子属性ofOverwritePrompt在这里才有意义,当其为True时,若试图选择一个已存在的文件,则弹出一个消息框,告知该文件已存在,询问是否用新文件替换原文件。

2.SaveDialog组件的方法

SaveDialog组件的常用方法也是Execute,其使用方法和OpenDialog组件完全一样。

8.3.3OpenPictureDialog(打开图像对话框)组件OpenPictureDialog组件的图标为。

OpenPictureDialog组件显示的【打开】对话框如图8-8所示。

由图8-8可以看出,打开图像对话框与打开对话框外观基本相同,区别仅在于打开图像对话框的右边有一个矩形的图像预览区,当从对话框选定一个图像文件时,预览区显示该图像。

OpenPictureDialog组件的属性和方法与OpenDialog组件的完全一样,只是OpenPictureDialog组件要打开的是图像文件,在设定其Filter属性时,应输入Delphi支持的图像文件的格式,包括.bmp(位图)文件、.ico(图标)文件、.wmf(Windows图元)文件、.emf(增强型Windows图元)文件等。当然,通过一定的操作,可以使之支持其他格式的图像文件,这方面的内容将在后面有关章节介绍。

8.3.4SavePictureDialog(保存图像对话框)组件SavePictureDialog组件的图标为。

SavePictureDialog组件显示的【另存为】对话框如图8-9所示。

保存图像对话框与保存对话框的区别也是对话框右边有一个矩形的图像预览区,当要保存一个图像文件时,预览区显示该图像。

SavePictureDialog组件的属性和方法同OpenPictureDialog组件的一样。

8.3.5FontDialog(字体对话框)组件FontDialog组件的图标为。

调用FontDialog组件的Execute方法,打开的【字体】对话框如图8-10所示。

可以看出,通过对话框可以设置选定文字的字体、字形、大小、颜色、字符集及删除线、下划线等效果。

FontDialog组件有如下一些主要属性。

1)Device属性

Device属性指定对话框中显示哪种设备的可用字体列表。该属性为枚举型属性,有以下3种字体类型列表。

同类推荐
  • SEO智慧

    SEO智慧

    本书不仅是系统讲述搜索引擎优化(SEO)的原理、技法、思维、经验的畅销作品,而且论述了市场学、营销学、心理学怎样与搜索营销形成综合战略的经典著作。从说明网站的搭建该怎样围绕搜索引擎优化开始,到网站优化的具体策划和技术细节,再到搜索营销的持续开展,说明打造投资回报率高的网站应该怎样具备必需的搜索营销思维和战略做法,是作者12年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。
  • 音视频合成制作

    音视频合成制作

    本书共分4篇6章,其中第1篇简介音视频合成的编导基础,第2篇主要介绍SonyCinescore1电影音乐自动合成,第3篇主要介绍Vegas7.0音视频剪辑合成,第4篇主要介绍AdobeAudition2.0、CakewalkSONAR6和SteinbergNuendo3的音视频合成。本书可以作为音乐、美术、动画、舞蹈、影视、戏剧等艺术院校视听艺术合成制作课程的教材,也可以作为相关人员的自学用书。
  • 组态软件控制技术

    组态软件控制技术

    监控组态软件是完成数据采集与过程控制的专用软件,它以计算机为基本工具,为实施数据采集、过程监控、生产控制提供了基础平台和开发环境。本书从应用角度出发,详细介绍了组态软件应用程序的开发过程。对窗口界面编辑、动画链接、实时和历史趋势、安全机制、I/O设备连接,以及生产应用等内容都做了非常详细的介绍。MCGS是优秀的监控组态软件之一,它功能强大、使用方便,可以非常容易地实现监视、控制、管理的各项功能,并可提供软、硬件的全部接口,方便、快速地进行系统集成,构成不同需求的数据采集与监控系统。本书可作为高等学校计算机应用、自动控制、电子技术、机电技术专业的教材,同时还可作为相关专业工程技术人员的自学用书。
  • 条形码技术与应用

    条形码技术与应用

    条形码是一种可供电子仪器自动识别的标准符号,是由一组黑白相间、粗细不同的条、空符号按一定编码规则排列组成的标记,用以表示一定的信息,确认某个物体或规定它的移动,能正确快速地为产、供、销各环节在采集、处理和交换信息时提供标识。
  • 爱上我的“手机女友”

    爱上我的“手机女友”

    本书共有五个部分:第一章:千娇百媚的我—手机门类大搜索第二章:了解我的心—手机“芯”理学第三章:不一样的我不一样的美—手机的万种风情第四章:命中注定我爱你—神秘手机星座解读第五章:有求必应贴心女友—手机的绝世武功通过这本书,想要购入手机的你会知道哪款手机女友更适合你,已有心仪手机的你可以让手机女友懂得更多变得更聪明。希望这本书能够帮助你在手机选购上和手机使用上更舒心、安心、贴心。
热门推荐
  • 古武王者在都市

    古武王者在都市

    身为古武者的龙天,以一种《丹经》在手,天下我有的姿态,行走在红尘都市之中!济世救人是他的崇高理想,惩恶扬善是他的修行之道!且看神农之子如何成就他的传奇人生,实现他的霸业之梦……
  • 三千金遇上三大少

    三千金遇上三大少

    曾经万人之上的她们,遭遇背叛,去了传说中的死亡岛,唯有她们三人回来,在这复仇计划中,会遭遇怎样的坎坷呢,敬请期待......
  • 欢喜冤家,呆萌少女遇上腹黑校草

    欢喜冤家,呆萌少女遇上腹黑校草

    伊笙默默的为自己喜欢的人付出,可是他却只把她当成“兄弟”看待。直到遇到了校草般的安幽尘,第一次把他当成人贩子,打伤了他,后来才知道他是司钰的朋友,特地过来接她的。第二次,她在学习门口把香蕉皮扔在他的头上,更可怕的是他们俩不仅同校同班同座,到最后发展成了同居。渐渐的心越来越近,越来越觉得他重要,可是就在这时原本一直把伊笙当成朋友的沐司钰,才发现他最喜欢的人一直都是伊笙,当他们俩向她表白时,面对这样的抉择伊笙会怎样选择呢。
  • 涅磐时代

    涅磐时代

    回到十年前的人生转折点,林树踩着中考的踏板,展开了一段新的征途。涅槃而为,跨时空而来的人生,该是一段怎样的精彩?生活给了林树另一扇窗,窗外五彩缤纷,三千繁华,而更远方,灿烂如金色阳光般的温暖倾泻而来。无奋斗不青春,年轻的战争就此开启。——————————————新书《天字号草根》已经发出来了,是个奋斗热血的故事,请品尝,多支持哦。
  • 灵魔之道

    灵魔之道

    修神之道困难而又强大,只要成为了神,便能掌握万物。神!以善良为主,没有一丝邪念。修魔之道虽容易但很容易被控制心智,走上不归之路。只要心态端正没有被控制。成魔,便能摧毁一切。魔!以邪恶为主,掌管着一切人类的命运。为了对付灵兽原本是仇人的神与魔,放下了心中的仇恨,共同抗敌。穿越后文迈影与曹应生也一步步走向成神之道!
  • 大王叫我来巡山

    大王叫我来巡山

    身为苍山的一只小妖,我一直以大王的话惟命是从。可是等等,为什么大王叫我嫁给他?嫁还是时不嫁?哎呀有选择症的我在不知道如何选择时果断的……逃跑了,然后……后果可想而知~
  • 魔鬼的温柔

    魔鬼的温柔

    他是救死扶伤的白衣天使,他是龙章凤姿的首席CEO,他是温文尔雅的完美情人,但,他更是一个魔鬼,一个无心、无爱、亦无情的魔鬼。——————————————————李宗睿:你为什么就是不肯求我?连一次都不肯?让你放下该死的骄傲来求我放过你,真的有这么难吗?况天蓝:如果我求你,你就会放过我吗?李宗睿:不会。我就是想看看你这个倔强的女人,向我求饶时的样子。况天蓝:所以,你永远都不会达到目的,你死心吧。李宗睿:该死心的人,是你。这辈子,你永远不要妄想会得到我一丝一毫的爱。况天蓝:我知道你的心早就埋葬了,我只是希望,祭奠你那颗心的地方,能照进一点阳光。——————————————————魔鬼说:你从来都看不见我的眼泪,因为你是天使,你在天堂。天使说:我能看得见你的眼泪,其实,与地狱一步之隔的,就是天堂,我在天堂遥望着你。魔鬼说:如果你感受到了我内心的悲伤,请不要为我哭泣,有了你的微笑,死亦足矣。天使说:如果我感受到了你内心的悲伤,我会折断双翼去陪你,因为,我爱你。——————————————————偶的围脖weibo.com/banjuqi2000如有亲转载sheline的文章,请注明:(红袖添香)sheline或(红袖添香)慕容婉箫,感谢亲的支持!
  • 游医修仙传

    游医修仙传

    混沌世界,我多次轮回,本以为是为赎清罪孽,飞升成仙,但是,我经历的每一世里都能遇到我不想忘却但从未记得的美丽之人,原来~
  • 时空守护者之次元至尊

    时空守护者之次元至尊

    成为了时空的守护者,游荡在各个位面之中,与众多高手交手,身旁众多美女围绕...且看张风如何纵横时空
  • 禅衣

    禅衣

    罗刹星起,天下将乱。必有一人,身披血色禅衣,登高而起,聚天下英豪,掌乱世于手中。二十八星宿归位定乾坤,共掌天罡地煞,尊罗刹为王,定禅衣为圣。本在乱世之中,纵有安定之心,却无平淡之命。天命难违,宿命难躲,定数难逃。唯有伤尽方能放下,唯有放下方得救赎。这样的救赎,究竟是救人?还是就己?彼岸忘川,奈何桥畔,唯有一人,无法背叛。离人花下泪,坐禅衣始干。“得禅衣者,得天下。”