登陆注册
36209800000020

第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种字体类型列表。

同类推荐
  • 数字博物馆研究与实践:2009

    数字博物馆研究与实践:2009

    本书汇集了“2009年北京数字博物馆研讨会”与会代表提交的60余篇论文和演讲报告、应用案例,分为数字博物馆(科技馆)发展研究探讨、数字博物馆(科技馆)多样性发展模式、数字技术在博物馆(科技馆)展陈中的应用、数字博物馆(科技馆)建设实践、数字博物馆(科技馆)实现技术和数字博物馆调研报告等六个部分。本书内容囊括了对数字博物馆(科技馆)建设宏观层面的全局思考以及微观层面的具体实践。在宏观层面,介绍了数字博物馆(科技馆)在国内外的发展现状与趋势,通过剖析典型案例,探讨数字博物馆(科技馆)建设的意义、目标、作用、建设原则、要素、特征及目前建设工作中存在的现实问题与对策。
  • FlashCS动画制作基础

    FlashCS动画制作基础

    适合爱好flash动画制作的初、中级读者作为入门学习的参考书,还可以供从事网页制作与动画设计的人员参考,同时也可以作为初、中级电脑短训班的培训教材,对有一定经验的flashcs5使用者也有很高的参考价值。
  • 计算机与人工智能(科学新知丛书)

    计算机与人工智能(科学新知丛书)

    本书是专门为中小学生编写的科普读物。全书共分八个部分,分别就计算机诞生的历程,计算机的种类、构造、作用及其发展趋势等方面进行了详尽的论述,全书论述深入浅出,行文活泼流畅。为本书的主要读者——广大的中小学生朋友认识计算机、了解计算机和掌握计算机提供了一把钥匙,是新时期中小学生开展素质教育不可多得的科普读物,中小学生家长及教师阅读此书也能从中获得有益的启示和感悟。
  • 现代企业财务软件应用教程

    现代企业财务软件应用教程

    本书内容包括财务软件概论、系统管理、企业应用平台、总账管理、报表管理、薪资管理、固定资产管理、应收款管理、应付款管理等。
  • 黑客就在你身边

    黑客就在你身边

    互联网络正在改变着我们的生活,每个人都处在互联网的天罗地网之中。本书以轻松的笔调,向人们介绍了有关“黑客”的知识。当你读完这本书后,你会发觉“黑客”一点都不神秘,他们渴望全社会对他们有一个公正的评价。
热门推荐
  • 福尔马林不甜

    福尔马林不甜

    苦味对于南许一来说,已经是习以为常的味道,他连喝咖啡都是最苦的意式特浓咖啡ESPRESSO,二十八年以来他并没有觉得这样有什么不妥。直到隔壁的甜品师突如其来的闯进他的世界,为他只有苦的世界带来了一丝丝甜,后来他才知道,甜是会让人上瘾的。南许一第一次对温也表白,他说:“每个人都有最不能舍弃的爱好,而我最不能舍弃的就是温也。”最不能舍弃是你,爱好也是你。
  • 那时候像风

    那时候像风

    时光总是这样,偷偷摸摸的一不留神,二十几个年头就这样过去了像风一样炙热的爱,轰轰烈烈像风一样剧烈的恨,刻骨铭心我爱了半辈子,也仇恨了半辈子,几乎仇恨了一半我所认识的人到最后只不过是一场消逝浮华的梦,可我却梦的那么真,那么久作品更新从今天开始将定于每天下午的六点到七点,欢迎收藏,欢迎评论
  • 恋上年少的你

    恋上年少的你

    【糖来了】“祁南,你可以带我去一个地方吗?”女孩悄悄地问。祁南嘴角勾起,慢慢的靠近女孩,眼睛里充满宠溺。“什么地方?”得到男孩的回答后,夏小暖笑着说“你家户口本上。”他笑了,说“那你可要对我负责啊!”
  • 皇上,臣妾知罪了

    皇上,臣妾知罪了

    单纯的罗莉爱上君王的故事“以后你就是我的王子了”某女说道
  • 恶罪之影

    恶罪之影

    那时,一切都不是那么的先进。科技覆盖的地方拥有最灿烂的阳光;可在它触及不到的角落里,却是迷雾重重。而在这迷雾中,罪恶蔓延滋生。你可以看到,可看到的只能是它的影子。
  • 这样做女孩最美丽

    这样做女孩最美丽

    美白祛斑抗衰自然保养魔法书,让女人永远定格在25岁的保养秘籍。新鲜魔法新鲜人,美丽需要战“痘”、扫“黑”、填“洞”、灭“纹”……18款超人气美白面膜,让你聪明选择;13个速效美容小妙方,让你亮白就在一瞬间;32种魔法嫩肤术,打造让他怦然心动的陶瓷肌肤……
  • 韩娱:真的很爱很爱你

    韩娱:真的很爱很爱你

    她最开始是S.M.公司的练习生,学校的顽皮国中女孩,现在她是F(X)的忙内,她是郑秀晶。他最开始是S.M.公司的练习生,学校里的校草,现在的他是EXO的忙内,他是吴世勋。他最开始出道前在街头演出,高中生里的面瘫,现在的他是infinite的门面担当,他是金明洙。然而,他们都喜欢上了郑秀晶,而小小年纪的郑秀晶渐生情愫。。她最终会选择谁?真的很爱很爱你——郑秀晶
  • 旧物世界

    旧物世界

    一间不大的店面,一群特殊的客人,一个个由鬼怪引出的故事人情事故就这样呈现在你面前,在这些人之中会不会有你的存在
  • 爱在紫色薰衣草

    爱在紫色薰衣草

    她冷漠,如冰山,他同样冷漠,在一起却擦出了火花,但是,因为一些原因,两人却不能在一起,最后两人会甜蜜在一起么?
  • 奇幻面具

    奇幻面具

    一副副面具伴随着空间扭曲穿越来到地球,他们力量各异,让人们为之疯狂。这一副副面具下到底隐藏着什么?