第7章通用对话框和剪贴板的应用.ppt
第7章 通用对话框和剪贴板的应用,7.1 通用对话框 7.2 剪贴板的应用 习题七,7.1 通用对话框,7.1.1 通用对话框的基本属性和打开方法 1通用对话框的基本属性(1)Name属性是通用对话框的名称属性。(2)Index属性是由多个对话框组成的控件数组的下标。(3)Left和Top属性表示通用对话框的位置。(4)Action功能属性直接决定打开何种类型的对话框,有下面7种状态。,0None:无对话框显示。1Open:打开“文件”对话框。2Save As:“另存为”对话框。3Color:“颜色”对话框。4Font:“字体”对话框。5Printer:“打印机”对话框。6Help:“帮助”对话框。该属性不能在属性窗口内设置,只能在程序中赋值,用于调出相应的对话框。,该属性不能在属性窗口内设置,只能在程序中赋值,用于调出相应的对话框。(5)DialogTitle(对话框标题)属性是通用对话框标题属性,可以是任意字符串。(6)CancelError属性表示用户在与对话框进行信息交互时,按下“取消”按钮时是否产生出错信息。True:表示按下对话框中“取消”按钮时,便会出现错误警告。False(缺省):表示按下对话框中的“取消”按钮时,不会出现错误警告。,一旦对话框被打开,即显示在界面上供用户操作,其中“确定”按钮表示确认,“取消”按钮表示取消。有时为了防止用户在未输入信息时使用取消操作,可用该属性设置出错警告。当该属性设为True时,对话框中的“取消”按钮一经操作,就自动将错误标志Error设为32755(CDERR-CANCEL),供程序判断。该属性值在属性窗口及程序中均可设置。通用对话框的属性不仅可以在属性窗口中设置,也可以在通用对话框控件“属性”对话框中设置。打开“属性”对话框的方法是对窗体上的通用对话框控件单击右键,在弹出的快捷菜单中选择“属性”命令。通用对话框控件“属性”对话框中有5个标签,对不同类型的对话框设置属性,就要选择不同的标签。例如,要对“颜色”对话框设置,就选定颜色标签。,2通用对话框的打开方法 除了Action属性,Visual Basic还提供了下面一组方法用来打开通用对话框。ShowOpen:“打开”对话框。ShowSave:打开“另存为”对话框。ShowColor:打开“颜色”对话框。ShowFont:打开“字体”对话框。ShowPrinter:打开“打印机”对话框。ShowHelp:打开“帮助”对话框。,7.1.2“打开”对话框 1FileName(文件名称)属性 该属性为文件名字符串,用于设置在“文件名称”文本框中显示的文件名。在程序中可用该属性值设置或返回用户所选定的文件名(包括路径名),即程序执行时,用户用鼠标选中的某个文件名或用键盘输入的文件名被显示在“文件名称”文本框中,同时用此文件名为FileName属性赋值,FileName属性得到的是一个包括路径名和文件名的字符串。,2FileTitle(文件标题)属性 该属性用于返回或设置用户所要打开的文件的文件名,它不包含路径。当用户在对话框中选中所要打开的文件时,该属性就立即得到了该文件的文件名。与FileName属性不同,FileTitle中只有文件名,没有路径名,而FileName中包含所选定文件的路径。,3Filter(过滤器)属性 该属性用于确定文件列表框中所显示文件的类型。该属性值可以由一组元素或用“|”符号分开的分别表示不同类型文件的多组元素组成。该属性值显示在“文件类型”列表框中。例如,如果想要在“文件类型”列表框中显示下列三种文件类型以供用户选择:Documents(*.DOC)扩展名为DOC的Word文件TextFiles(*.TXT)扩展名为TXT的文本文件All Files(*.*)所有文件那么Filter属性应设为 Documents(*.doc)|*.DOC|Text Files(*.TXT)l*.txt|All Files|*.*,4FilterIndex(过滤器索引)属性 该属性为整型,表示用户在文件类型列表框中选定了第几组文件类型。如果选定了文本文件,那么FilterIndex值等于2,文件列表框只显示当前目录下的文本文件(*.TXT)。所以,在上面的例子中,Documents类型文件的FilterIndex为1,Text Files类型文件的FilterIndex为2,All Files类型文件的FilterIndex为3。,5InitDir(初始化路径)属性 该属性用来指定打开对话框中的初始目录。若要显示当前目录,则该属性不需要设置。【例7-1】编写一个应用程序,选择“编辑图片”命令,弹出打开对话框,当选定一个BMP位图文件,并且按下“打开”按钮后,能调用Windows 95的画图程序编辑该图片。首先在窗体上建立一个名称为CommonDialog1的通用对话框,其属性按如下要求设置:CommonDialog1.FileName=*.BmpCommonDialog1.InitDir=C:WindowsCommonDialog1.Filter=Pictures(*.Bmp)|*.Bmp|All Files(*.*)|*.*Filter.Index=1,此外,还建立一个命令按钮,名称为cmdEdit,标题为“编辑图片”,其事件过程如下:Sub cmdEdit_Click()Dim Pathname$,RetVal%CommonDialog1.Action=1Pathname=C:WindowsPbrush.exe+CommonDialog1.FileNameRetVal=Shell(Pathname,1)End Sub,图7.1 界面设计,【例7-2】编写一个简单的文本文件编辑程序,文件的内容显示在文本框中。(1)界面及其对象属性设计:界面设计如图7.1所示。窗体与其上的控件的属性如表7.1所示。,表7.1 通用对话框示例中控件属性设置,(2)事件编程:下面列出了事件过程cmdOpenClick和cmdQuitClick的程序代码。Private Sub cmdOpen_Click()Dim inputdata$CommonDialog1.Action=1 txtNoteEdit.Text=Open CommonDialog1.FileName For Input As#1 打开文件进行读操作 Do While Not EOF(1)Line Input#1,inputdata 读一行数据 txtNoteEdit.Text=txtNoteEdit.Text+inputdata+_,Chr(13)+Chr(10)Loop Close#1 关闭文件End SubSub cmdQuitClick()EndEnd Sub,(3)打开一个文件后的界面如图7.2所示。,图7.2 打开一个文件后的界面,7.1.3“另存为”对话框“另存为”对话框是当Action为2时的通用对话框。它为用户在存储文件时提供一个标准用户界面,供用户选择或键入所要存入文件的驱动器、路径和文件名。同样,它并不能提供真正的存储文件操作,存储文件的操作需要通过编程来完成。“另存为”对话框所涉及的属性基本上和“打开”对话框一样,只是还有一个DefaultExt属性,它表示所存文件的扩展名缺省。对“另存为.”命令按钮编写如下事件过程,把文本框内的信息存盘。界面显示如图7.3所示。,Private Sub cmdSaveas_Click()CommonDialog1.FileName=Default.Txt 设置缺省文件名 CommonDialog1.DefaultExt=Txt 设置缺省扩展名 CommonDialog1.Action=2 打开另存为对话框 Open CommonDialog1.FileName For Output As#1 打开文件供写入数据 Print#1,txtNoteEdit.Text Close#1End Sub,图7.3“另存为”对话框,7.1.4“颜色”对话框“颜色”对话框是当Action为3时的通用对话框,供用户选择颜色。对于“颜色”对话框,除了基本属性之外,还有个重要属性Color。它返回或设置选定的颜色。在调色板中提供了基本颜色(Basic Colors),还提供了用户的自定义颜色(Custom Colors),用户可自己调色。当用户在调色板中选中某颜色时,该颜色值赋给Color属性。弹出的“颜色”对话框如图7.4所示。对“颜色”命令按钮编写如下事件过程,设置文本框的前景色。显示效果如图7.5所示。,Private Sub cmdColor_Click()CommonDialog1.Action=3 打开颜色对话框 txtNoteEdit.ForeColor=CommonDialog1.ColorEnd Sub,图7.4 调出“颜色”对话框,图7.5 选择红色后的显示,7.1.5“字体”对话框“字体”对话框是当Action为4时的通用对话框,供用户选择字体。1Color属性 该属性值表示字体的颜色。当用户在颜色列表框中选定某颜色时,Color属性值即为所选颜色值。2FontName属性 该属性为用户所选定的字体名称。,3FontSize属性 该属性为用户所选定的字体大小。FontBold、FontItalic、FontStrikethru和FontUnderline属性均为逻辑类型,即它们的值是True或False。4Min、Max属性 这两个属性用于设定用户在字体对话框中所能选择的最小值和最大值,即用户只能在此范围之内选择字体大小,该属性以点(Point)为单位。5Flags属性 在显示“字体”对话框之前必须设置Flags属性,否则将发生不存在字体错误。Flags属性应取如表7.2所示的常数。,表7.2 字体对话框Flags属性设置值,对“字体.”命令按钮编写如下事件过程,设置文本框的字体。结果显示如图7.6所示。Private Sub cmdFont_Click()CommonDialog1.Flags=cdlCFBoth Or cdlCFEffects CommonDialog1.Action=4 打开字体对话框 txtNoteEdit.FontName=CommonDialog1.FontName txtNoteEdit.FontSize=CommonDialog1.FontSize txtNoteEdit.FontBold=CommonDialog1.FontBold txtNoteEdit.FontItalic=CommonDialog1.FontItalic txtNoteEdit.FontStrikethru=CommonDialog1.FontStrikethru txtNoteEdit.FontUnderline=CommonDialog1.FontUnderline txtNoteEdit.ForeColor=CommonDialog1.ColorEnd Sub,图7.6“字体”对话框,7.1.6“打印”对话框“打印”对话框是当Action为5时的通用对话框,是一个标准打印对话窗口界面。“打印”对话框并不能处理打印工作,仅仅是一个供用户选择打印参数的界面,所选参数存于各属性中,再通过编程来处理打印操作。对于“打印”对话框,除了基本属性之外,还有下列两个重要属性。1Copies(复制份数)属性 该属性为整型值,用于存放指定的打印份数。,2FromPage(起始页号)、Topage(终止页号)属性 它们用于存放用户指定的打印起始页号和终止页号。对“打印”命令按钮编写如下事件过程,打印文本框的信息。在下面的过程中涉及到系统对象Printer,它代表打印机。调出打印机的界面如图7.7所示。,Private Sub cmdPrint_Click()Dim i%CommonDialog1.Action=5 打开打印机对话框 For i=1 To CommonDialog1.Copies Printer.Print txtNoteEdit.Text 打印文本框中的内容 Next i Printer.EndDoc 结束文档打印End Sub,图7.7“打印”对话框,7.1.7“帮助”对话框“帮助”对话框是当Action为6时的通用对话框,是一个标准的帮助窗口,可以用于制作应用程序的在线帮助。“帮助”对话框不能制作应用程序的帮助文件,只能将已制作好的帮助文件从磁盘中提取出来,并与界面连接起来,达到显示并检索帮助信息的目的。制作帮助文件需要用Microsoft Windows Help Compiler,即Help编辑器,生成帮助文件以后,可直接在界面上利用“帮助”对话框窗口为应用程序提供在线帮助。对于“帮助”对话框,除了基本属性之外,还有下面4个重要属性。,1HelpCommand(帮助命令)属性 该属性用于返回或设置所需要的在线Help帮助类型。2HelpFile(帮助文件)属性 该属性用于指定Help文件的路径及其文件名称,即找到帮助文件,再从文件中找到相应内容,显示在Help窗口中。,3HelpKey(帮助键)属性 该属性用于指定帮助信息的内容,帮助窗口中显示由该帮助关键字指定的帮助信息。例如,如果想在标准Help窗口中显示VB.HLP的Common Dialog Control语句的帮助,那么应按如下要求设置属性:CommonDialog1.HelpCommand=vbHelpContentsCommonDialog1.HelpFile=VB.HLPCommonDialog1.HelpKey=Common Dialog ControlCommonDialog1.Action=6,4HelpContext(帮助上下文)属性 该属性返回或设置所需要的HelpTopic的Context ID,一般与HelpCommand属性(设置为vbHelpContents)一起使用,指定要显示的HelpTopic。【例7-3】编写一个应用程序。在运行期间,当选择“显示卡片盒帮助”按钮(名称为cmdDisplayHelp)时,就弹出帮助窗口。通用对话框的名称为CommonDialog1。Sub cmdDisplayHelp_Click()CommonDialog1.HelpCommand=cdlHelpForceFileCommonDialog1.HelpFile=cwindowscardfile.hlpCommonDialog1.Action=6End Sub,7.2 剪贴板的应用,Windows的Clipboard(剪贴板)可用于在不同的Windows应用程序之间交换信息,这种交换是静态信息的交换。在同一时刻,剪贴板上只能容纳一组同一类型的数据,当一组数据存入剪贴板时,剪贴板上原有的数据被破坏。Visual Basic直接支持Windows的Clipboard对象。Clipboard对象既无属性也无事件函数,但它提供了若干操作对象的方法,如表7.3所示。,表7.3 剪贴板操作对象的方法,利用这些方法不仅可以实现文本的各种剪贴操作,还可以实现图形的复制和剪贴操作;不仅可以实现Visual Basic应用程序之间的数据共享,还可以实现Visual Basic应用程序与Windows其它应用程序之间的数据交换。对于Windows操作环境的Clipboard对象,它可以识别的Clipboard数据格式如表7.4所示。,表7.4 剪贴板的数据格式,Visual Basic使用Clear方法清除剪贴板上的信息,其格式为 Clipboard.Clear Clear方法没有参数,它清除剪贴板上现存的文本或图形信息。执行本方法后,如果没再向剪贴板传送信息,就不能从剪贴板读出任何信息。,7.2.1 文本剪贴 在Visual Basic窗体上使用的任何种类的文本框或组合框,均可通过SetText方法将文本拷贝到剪贴板,同时清除剪贴板上原有的数据。SetText方法通常以如下形式使用:Clipboard.SetText 字符数据,剪贴板格式 文本剪贴可识别vbCFText和vbCFLink格式,缺省值为vbCFText。对提供数据的文本框或组合框,可通过下面三个属性来引用所选择的文本。,1SelStart属性 SelStart是个长整型值,指定被选中文本数据的起始位置。如果这个值是0,用户就从文本框或组合框的开始选择文本;如果这个值等于文本串的长度,则从当前框中所有文本之后开始工作。例如,对于一个文本框控件Text1,执行以下代码:Text1.SelStartLen(Text1.Text)/2 就是从文本的中间开始选择文本。函数Len(Text1.Text)/2返回文本串长度的一半。,2SelLength属性 SelLength指定被选中的字符数。如果SelLength为0,则没有字符被选中;如果SelLength等于文本串的长度,则控件中的所有字符被选中。例如,对于一个文本框Text1,执行以下代码:Text1.SelStart=0 Text1.SelLength=Len(Text1.Text)/2则使文本框内的前半部分被选择(显示成高亮度)。,3SelText属性 SelText确定当前被选中的字符串。如果没有字符被选中,它为一个空串。当SelText被设置为新字符串后,Visual Basic用新字符串代替被选中的文本并且使SelLength为0。例如,实现对一个文本Text1编辑时的拷贝,可用如下代码:Clipboard.SetText Text1.SelText这里,用SetText方法将文本Text1当前被选中的字符串拷贝到剪贴板。而要实现对Text1所选文本的剪切,可用下面的代码:Clipboard.SetText Text1.SelText Text1.SelText=,通过设置SelText的值为空串,用空串代替被选中的文本,达到了将选择的文本从文本框中剪切出来的目的。SetText方法将文本拷贝到剪贴板,反之,要从剪贴板上取出数据,需使用GetText方法。这个方法的使用类似于一个函数,其通用格式为变量Clipboard.GetText()通过GetText方法,从剪贴板上取出的数据存入到指定的变量。利用SetText和GetText方法很容易实现Copy、Cut和Paste等功能。,7.2.2 图形剪贴 在Visual Basic中使用的图形对象,可通过SetData方法将其拷贝到剪贴板,同时清除剪贴板上原有的数据。SetData方法通常以如下形式使用:Clipboard.SetData 图形数据,剪贴板格式 如果SetData方法中的剪贴板格式取值为0或省略,SetData自动确定图片格式。从剪贴板上返回图片,需使用GetData方法,其通用格式为变量=Clipboard.GetText(剪贴板格式),如果GetData方法中的剪贴板格式取值为0或省略,GetData自动地使用适当的格式。如果Clipboard中没有与期望的格式相匹配的图片,则返回空图片。如果在Clipboard中只有颜色调色板,则创建最小尺寸(11)的设备独立位图。,【例7-4】在窗体上用一个命令按钮控件和一个文本框演示文本剪贴,用一个命令按钮控件和一个图形框演示图形剪贴。控件属性设置如7.5表。,表7.5 窗体上控件属性设置,(1)cmdText_Click事件要完成的工作是:先输入文本到文本控件txtDisp,然后将文本拷贝到剪贴板,再将该文本内容逆向拷贝到txtDisp。Private Sub cmdText_Click()Dim Msg,temp,I%On Error Resume NextMsg=输入文本txtDisp.Text=InputBox(Msg)键入文本存入txtDispMsg=选择OK将文本拷贝到剪贴板MsgBox MsgClipboard.Clear 清剪贴板,Clipboard.SetText txtDisp.Text 将文本拷贝到剪贴板txtDisp.Text=清txtDispMsg=文本在剪贴板Msg=Msg+选择OK将剪贴板位上的文本逆向拷贝到TEXTMsgBox Msgtemp=Clipboard.GetText(vbCFText)拷贝剪贴板上的文本到变量tempFor I=Len(temp)To 1 Step-1 逆向取变量temp的内容 txtDisp.Text=txtDisp.Text&Mid(temp,I,1)Next IEnd Sub,(2)cmdPicture_Click事件要完成的工作是:将图片框picDisp内的图形装入到剪贴板,然后清除图片框,再将剪贴板图元拷贝到图片框。程序运行结果如图7.8所示。Private Sub cmdPicture_Click()Dim MsgOn Error Resume NextMsg=选择OK将位图装入剪贴板MsgBox MsgClipboard.Clear 清剪贴板Clipboard.SetData PicDisp.Picture 将图片框内图形装入剪贴板PicDisp.Picture=LoadPicture()Msg=一个位图在剪贴板,Msg=Msg&选择OK剪贴板位图拷贝到窗体MsgBox Msg 拷贝剪贴板图元到图片框PicDisp.Picture=Clipboard.GetData(vbCFMetafile)Clipboard.Clear 直接将位图装入剪贴板Clipboard.SetData LoadPicture(c:windowsACD Wallpaper.bmp)If Err ThenMsg=文件不存在MsgBox MsgExit Sub,End IfMsgBox Msg 将剪贴板内的leaves.bmp位图剪贴到图片框ClipboardShow.PicDisp=Clipboard.GetData(vbCFBitmap)End Sub,图7.8 剪贴板应用示例,习 题 七,7.1 设计一个通用对话框的程序,要求在一个文本框中显示“打开”对话框选定的路径及文件名,能够采用“字体”和“颜色”对话框控制该文本框中文本的字体和颜色,并且能够“另存为”一个文件。7.2 制定一个对话框,在该对话框中输入文本,利用单选按钮控制该文本的字体样式,利用复选按钮控制该文本的效果。,