vfp Common Dialogs

来源:百度文库 编辑:神马文学网 时间:2024/06/03 15:09:07

如果你用过 FoxPro GETFILE() 和 PUTFILE() 函数。你可能对它们多少有些遗憾: 字串8

  • 没有办法改变对话框的标题。
  • PUTFILE() 函数总是询问用户是否想复盖已存在的文件。
  • 使用两个函数时。指定的路径必须存在,否则将显示一条错误信息。

为了得到更大的灵活性。你需要使用随 VFP 5 同时发布的 Common Dialogs 控件(在 \WINDOWS\SYSTEM 目录下的 COMDLG32.OCX 中)。该控件称为 "Common dialogs" 是因为它可以显示文件。颜色。字体和打印对话框。所有这些对话框提供了比 VFP 的相同功能更大的灵活性。例如。当在 VFP 中使用 GETFONT() 和 GETCOLOR() 函数时。你控制不了所有的东西,如非 TrueType 字体是否可用或用户是否可自定义颜色。Common Dialog 中的字体和颜色对话框就有这种功能。字串7

 

由于时间限制。在本章中我们只集中讨论文件对话框。如果你想知道关于颜色,字体和打印对话框的更多信息。请参阅 ActiveX 控件的帮助文件。注意 Common Dialogs 控件没有出现在帮助文件的目录页中。但可以在选定控件后按下 F1 键或在帮助索引中搜索 "Common Dialog" 来找到它们。
方法 字串4

Common Dialogs 控件有五个方法,它们都没有参数:字串8

 

  • ShowOpen() 显示打开文件对话框;
  • ShowSave() 显示保存文件对话框;
  • ShowPrinter() 显示打印机对话框;
  • ShowFont() 显示字体对话框;
  • ShowColor() 显示颜色对话框。

在本章中我们只使用了前两个方法。
属性 字串1

以下是最常用的 Common Dialogs 控件的文件对话框的属性 (一些属性也用于字体,颜色和打印机对话框);其它较少使用的属性的信息参见它们的帮助文件: 字串8

  • CancelError:如果想在用户选择取消时生成一个错误(错误号1429),设置该属性为 .T.。可以在控件的 Error 方法中温和地捕捉并处理错误。这是必须的,因为在类似的 VFP 函数返回一个特殊值时(通常是一个空格) 来指明用户选择了取消,但这些对话框不会返回值。
  • DefaultExt:如果用户没有输入扩展名,该扩展名自动添加到用户输入的文件名后面。
  • DialogTitle:对话框窗口标题。
  • FileName:用于文件名的初值,添加它的内容到从对话框返回的用户输入值上。如果不允许选择多个文件,或虽允许但用户只选择了一个文件,FileName 包含了选定文件的完整的路径和文件名。如果允许选择多个文件且用户选择了一个以上的文件,FileName 在选定文件列表前,含有以分隔符与选定文件分开的,选定文件的路径(多个文件之间以分隔符分开,但不带路径)。在 Windows 95 和 NT 4 中分隔符是CHR(0),在 Windows NT 3.51 中分隔符是一个空格。例如,如果用户从 VFP 的示例数据目录中选择了三个表,FileName 的内容可能是 C:\VFP5\SAMPLES\DATA <分隔符> CUSTOMER.DBF <分隔符> ORDERS.DBF <分隔符> ORD99vEMS.DBF"。关于分解 FileName 为路径和不同的文件名,请参见 SFFileDialog 类的 SetProperties() 方法(稍后讲述)。
  • FileTitle:若不允许选择多个文件,返回不含路径的选定文件的名字.否则返回值为空。
  • Filter:可接受文件说明。Filter 有两个部分:用户所见到的说明(如,"数据库文件") 和这些文件的扩展名描述(如 "*.DBC")。说明和描述以竖线( | )分开。可以用多个竖线分隔的方式提供一个以上的 filter。如,"数据库文件 | *.DBC | 表 | *.DBF | 全部文件 | *.*"。
  • FilterIndex:使用的默认 filter 。第一个 Filter 属性是 1。
  • Flags:该属性控制对话框的外观和行为。可使用的值见后。
  • HelpFile:当用户单击对话框中的帮助按钮时使用的帮助文件的名字。
  • HelpCommand:该属性的最常用设置是(其它设置参见该控件的帮助文件) 0x1 (使用 HelpContextID),0x101 (使用关键字),或 0x105 (使用部分关键字)。注意:0x 符号,是 VFP 5 的新功能,指明一个十六进制值。
  • HelpContext:当 HelpCommand 的值设置为 0x1 时,要显示的帮助文件中的主题的 HelpContextID。
  • HelpKey:当 HelpCommand 的值设置为 0x101 或 0x105 时,要在帮助文件中查找的关键字。
  • InitDir:对话框要显示的初始目录。

注意帮助中提到了另外两个属性,Path 和 Drive,但它们并不存在。 字串9

Flags 属性的行动与 VFP 的 MESSAGEBOX() 的 DialogBoxType 参数相似;可以按你的需要添加多个不同的值来组合它的外观和行为。不幸的是,即使 flag 对于多种类型的对话框具有相同的意思,但它可能有不同的值。字串8

 

例如,显示帮助按钮 flag 对于颜色对话框是 0x8 而对于文件对话框是 0x10。

字串2

 

因为各个对话框的设置值相当神秘,我创建了一个叫做 COMMDLG.H 的包含文件用于定义各个不同的值的常数。要设置控件的 Flags 属性,简单的添加你想组给的设置值即可。字串7

 

例如,要显示帮助按钮和复盖警告,可以这样设置: 字串3

This.oCommonDialog.Flags = cnFILEDLG_OVERWR99vE + cnFILEDLG_SHOWHELP

以下是最常用的 Flags 选择(其它的参见帮助文件): 字串7

  • Allow Multiple File Selection (0x200;cnFILEDLG_MULTIPLE 在 COMMDLG.H 文件中):允许选择多个文件。如果开启了这一开关,对话框的出现与一般的 Windows 95 对话框相当不同,除非你也添加了 0x80000 (cnFILEDLG_EXPLORER) 到 Flags 中;注意帮助文件中的该值是错误的 0x8000。
  • Prompt if File Doesn't Exist (0x2000;cnFILEDLG_PROMPTNEW):提示用户创建一个目前尚不存在的文件。如果开启该选项,就不需要开启"Path Must Exist" 和 "File Must Exist" 标志,由于它们是自动设置的("Path Must Exist" 开启且"File Must Exist" 关闭)。该标志未用于 Save 对话框。
  • File Must Exist (0x1000;cnFILEDLG_FILEEXIST):如果用户输入的文件名不存在,显示一个错误信息。如果开启该选项,"Path Must Exist" 标志自动开启。该标志未用于 Save 对话框。
  • Path Must Exist (0x800;cnFILEDLG_PATHEXIST):如果用户输入的路径不存在,显示一条错误信息。VFP 的 GETFILE() 和 PUTFILE() 函数的该开关是永远地开启的,这可能也是你为什么要选择 Common Dialogs 控件的理由吧。
  • Hide Read Only (0x4;cnFILEDLG_HIDERO):隐藏对话框中的"只读"复选框。
  • Help Button (0x10;cnFILEDLG_SHOWHELP):在对话框中显示帮助按钮。
  • Overwrite Prompt (0x2;cnFILEDLG_OVERWR99vE):如果用户输入了一个已存在的文件名,显示一个"复盖该文件"信息 。该标志仅用于 Save 对话框。VFP 的 PUTFILE() 函数总是保持该开关为开,这可能是你为什么要选择 Common Dialogs 控件的另一个理由。
  • Share Aware (0x4000;cnFILEDLG_SHAREAWARE):允许用户选择一个已被其它应用程序打开的文件。
  • Don't Change Directory (0x8;无常数定义):文件对话框会做一些你可能不希望的事:如果用户选择了一个与当前目录不同的目录,在退出对话框时,该目录将变为当前目录。该设置可避免出现上述情况