Dialog
Dialog 对象允许您显示对话框,这些对话框会提示用户进行确认、允许他们输入文本字符串或密码,并选中复选框选项或从下拉列表中选择。您还可以使用该对象在屏幕上显示弹出菜单。
您可以从 DOpus.Dlg, 文件窗口.Dlg, Tab.Dlg, Func.Dlg 和 Command.Dlg 方法创建 Dialog 对象。
有关其使用示例,请参见 示例脚本 部分。
有两种不同的方法可以使用 Dialog 对象。您可以:
使用一击式方法(Folder、GetString、Multi、Open、Request 或 Save)来显示各种类型的简单对话框,或
首先通过设置各种属性的值配置对话框,然后调用 Show 函数显示它。此方法还允许您创建和使用 脚本对话框。
一击式方法接受多个参数,但通常不如构建对话框然后调用 Show 灵活。
**标题**
属性名称 | 返回类型 | 描述 | ||
---|---|---|---|---|
buttons | string | 指定显示在对话框底部的按钮。这些按钮用于关闭对话框。Show 方法返回一个值,指明选择了哪个按钮(此值也在 result 属性中提供)。 多个按钮字符串必须用竖线字符 (|) 分隔。如果一个按钮有多个按钮,那么按照定义,最后一个是“取消”按钮。例如: 要为按钮指定加速器,请用一个和号 (&) 字符作为想要按键的前缀。例如: 按钮还可以附带下拉菜单,用加号 (+) 分隔下拉菜单项。例如: 在下拉菜单中,您可以指定通过按住 Shift、Ctrl 或 Shift+Ctrl 可以直接从主按钮访问某些菜单项。这可以通过添加一个等号,然后添加按钮按住该键后显示的标签(通常是菜单项标签的缩写,或者如果该标签本身已经足够短,则重复该标签)来完成。这些键会被自动分配,并且您至多只能对三个项执行此操作。例如: <WRAP prewrap> </WRAP> | ||
choices | object:Vector(string) 或 array(string) | 该属性使用 Vector 或字符串数组来提供可以向用户显示的多个选项的列表。该列表可以以下三种方式之一显示:
当以复选框列表形式显示时,对话框是可调整大小的;您可以使用 cx 和 cy 属性设置初始大小(如果要保存大小,可以在之后检索它们)。 | ||
confirm | bool | 在文本输入对话框中(即已指定 max 属性),将 confirm 设置为 True 将要求用户在另一个文本字段中再次键入输入的文本以确认(例如,用于密码)。 | ||
cx | int | 对于标记为可调整大小的 脚本对话框,该属性允许您重写资源中定义的对话框的宽度 - 虽然请注意,您不能将对话框的大小调整为小于其初始大小。 | ||
cy | int | 对于标记为可调整大小的 脚本对话框,该属性允许您重写资源中定义的对话框的高度 - 虽然请注意,您不能将对话框的大小调整为小于其初始大小。 | ||
defvalue | string | 在文本输入对话框中(即已指定 max 属性),该属性允许您使用默认值初始化文本字段。 (旧脚本可以使用“default”而不是“defvalue”;这不推荐,因为它在 JScript 中不起作用,因为“default”是保留关键字。) | ||
defid | int | 允许您更改对话框中的默认按钮(即用户按下 enter 时将发生的动作)。通常第一个按钮是默认按钮 - 此按钮的 defid 为 1。第二个按钮的 defid 将为 2,以此类推。如果一个对话框有多个按钮,那么按照定义,最后一个按钮是“取消”按钮,它的 defid 为 0。 | ||
detach | bool | |||
disable_window | 用这个来让对话框在显示时自动禁用另一个窗口。在对话框关闭之前,用户将无法在禁用的窗口中单击或键入。通常,如果您使用此设置,您会将其设置为与 window 属性相同的值。 您可以提供一个 文件窗口 或 Tab 对象,或另一个 Dialog。如果您作为对 OnAboutScript 事件的响应显示此对话框,还可以传递 AboutData.window 属性的值。 | |||
icon | string 或 object:Image | string | This property specifies the title of the dialog to display. | |
x | int | When the position property is set to absolute, parent, or monitor this property is used to control the x-position of the dialog on-screen. All other values for position ignore this property. | ||
y | int | When the position property is set to absolute, parent, or monitor this property is used to control the y-position of the dialog on-screen. All other values for position ignore this property. | ||
字符串 | 指定对话框的标题文本。 | |||
顶部 | 布尔值 | 将此属性设置为 True 可使对话框称为“顶级”,或设置为 False 以允许其表示在其它非顶级窗口后面。 | ||
希望关闭 | 布尔值 | 当用户单击窗口关闭按钮时,如果您希望脚本对话框在您的消息循环中生成关闭事件,请将此属性设置为 True。您将需要使用 EndDlg 方法自行关闭对话框。 | ||
希望调整大小 | 布尔值 | 如果您希望脚本对话框在用户调整对话框大小时在您的消息循环中生成 调整大小 事件,请将此属性设置为 True。 | ||
窗口 | ||||
x | int | 指定脚本对话框 的 x 位置。使用 position 属性控制如何解释位置。在显示对话框后,您可以更改此属性以在屏幕上移动对话框。 | ||
y | int | 指定脚本对话框 的 y 位置。使用 position 属性控制如何解释位置。在显示对话框后,您可以更改此属性以在屏幕上移动对话框。 |
方法名称 | 参数 | 返回类型 | 描述 | ||||||||||||||||||||
添加热键 | <字符串:名称> <字符串:键> | 无 | 为指定键组合创建热键(或键盘加速器)。当用户在您的对话框中按此键组合时,将触发 热键 事件。 name 参数是您分配的用以标识热键的名称。key 参数指定了实际的键组合;这可以可选地将限定符 ctrl、shift 和 alt 与字符或特殊键的名称组合起来。例如,ctrl+t 或 alt+shift+F7。 | ||||||||||||||||||||
自动调整大小 | 无 | 无 | 如果对话框具有自动调整大小的控件,这些控件取决于其它控件的大小,并且您正在运行时更改其大小,则可以在完成所需更改后调用此方法以强制对话框重新计算所有相对控件大小。 | ||||||||||||||||||||
取消监视目录 | <字符串:id> | 无 | 取消由调用 WatchDir 方法先前建立的文件夹或文件更改监视。id 参数是您在创建观察器时分配给它的 ID。 | ||||||||||||||||||||
创建 | 无 | 无 | |||||||||||||||||||||
创建字体 | <字符串:名称> [<int:大小>] [<字符串:样式>] | int | 创建一个字体对象,可以将其提供给对话框控件,以使其使用非标准字体。name 参数指定字体的名称(例如,“Arial”) - 您还可以使用“*”,表示默认的对话框字体。size 参数指定所需的点数大小(使用 0 以获取默认的对话框字体大小)。styles 字符串可以由一个或多个字符组成,表示所需的字体样式 - “b” 表示粗体,“i” 表示斜体,“u” 表示下划线。 返回值可以与 Control.SetFont 方法一起使用。 创建的字体会在对话框关闭时自动销毁,但如果您想手动删除它们以释放资源,请使用 DestroyFont 方法。 | ||||||||||||||||||||
控件 | <字符串:名称> [<字符串:对话框>] [<字符串:标签页>] | 对象:Control | 返回与脚本对话框上的某个控件对应的 Control 对象。该控件由其名称标识,如脚本对话框资源中定义的那样。 可选的第二个和第三个参数仅在控件位于标签页控件中(即,当它位于另一个对话框的子对话框中)时使用。dialog 参数指定其父对话框的名称。tab 参数指定托管子对话框的标签页控件的名称。您只需要在具有多个标签页控件并在其中多个控件内部托管同一个对话框的情况下指定标签页的名称(这种情况很罕见)。 请注意,在调用 Create 之前,任何控件都不会存在。 | ||||||||||||||||||||
删除热键 | <字符串:名称> | 无 | 删除您之前使用 AddHotkey 方法创建的热键。 | ||||||||||||||||||||
拖动 | 对象:Items <字符串:动作> | 字符串 | 允许用户从您的对话框拖放一个或多个文件(并将其放到其它窗口或应用程序中)。 通常,您会在收到 static 或列表视图控件发送的 拖动 事件时调用此方法。 第一个参数是一个 Items 对象,表示要拖动的文件。(您还可以传递 Vector 的 Item 或 Path 对象,或完整路径字符串,而不是 Items 对象。或 StringSet 或 UnorderedSet 包含完整路径字符串。) 可选的第二个参数允许您控制哪些操作可用。这应包含 copy、move、link 中的一个或多个字符串。可以通过前缀 *(例如 copy,*move,link)指示默认操作。如果您不指定此参数,则默认为仅允许 copy。 此方法返回的字符串指示了拖拽的结果。对于左键拖拽,结果将是“复制”、“移动”、“链接”或“删除”。对于右键拖拽,结果将始终是“删除”。如果拖拽被取消,则将返回“取消”。 | ||||||||||||||||||||
DestroyFont | <int:id> | none | 使用由 CreateFont 方法返回的 ID 销毁指定的字体。 | ||||||||||||||||||||
EndDlg | <int:result> | none | 结束在分离模式下运行的 脚本对话框。在用户单击关闭按钮或其 关闭对话框 属性设置为 True 的另一个按钮时,对话框通常会自动结束。通过此方法,可以结束脚本当中的对话框。可选参数指定 Dialog.result 属性将返回的结果代码。 | ||||||||||||||||||||
Folder | <string:title> <string:default> <bool:expand> <object:window> | object:Path | |||||||||||||||||||||
GetMsg | none | object:Msg | |||||||||||||||||||||
GetString | <string:message> <string:default> <string:max> <string:buttons> <string:title> <object:window> <byref string:result> | string | 显示文本输入对话框,允许用户输入字符串。可选参数为:
返回值是输入的字符串,如果取消对话框,则为空值。此方法返回之后,用户选择的按钮的索引将通过 result 属性提供。最左边的按钮索引为 1,下一个按钮索引为 2,以此类推。如果对话框有多个按钮,则根据定义,最后一个 (最右边的) 按钮是“取消”按钮,因此它将返回索引 0。 | ||||||||||||||||||||
KillTimer | <string:name> | none | 停止指定的计时器。计时器之前必须已通过调用 SetTimer 方法创建。 | ||||||||||||||||||||
LoadPosition | <string:id> <string:type> | none | 恢复 脚本对话框 的先前保存的位置。必须先通过调用 SavePosition 方法保存该位置。 id 字符串是 Opus 可以用来标识你的对话框或来源脚本的字符串。对话框的模板名称将自动附加到此字符串。例如,你可以将 id 指定为 "kundal" - 然后 Opus 将在内部将名为 "dialog1" 的对话框的位置保存为 "kundal!dialog1". 确保选择其它脚本作者不太可能使用的字符串,因为 Opus 没有其它方法来区分已保存的位置。 可选类型参数允许你控制哪些位置元素被恢复 - 指定 "pos" 仅恢复位置,指定 "size" 仅恢复大小,或指定 "pos,size" 恢复两者 (这也是默认设置,因此你也可以完全省略该参数)。 | ||||||||||||||||||||
Multi | <string:title> <string:default> <object:window> | object:Items | |||||||||||||||||||||
NotifyIcon | <string:method> arguments... | none | 允许脚本来系统任务栏通知区域中添加图标。 method 参数指定四个操作之一,每个操作都有自己的一组参数。
对于 add 和 update 方法,icon 参数可以是字符串或 Image 对象 - 有关详细信息,请参阅上文有关 icon 属性的文档。如果已通过此属性为对话框分配了一个图标,则如果没有提供图标,将自动使用该图标。 tooltip 参数提供了提示字符串,当用户将鼠标移动到图标上方时,系统将显示此字符串。如果已设置对话框的 title 属性,则在未给出明确提示时将使用标题。 notify 方法可让你显示与对话框关联的系统通知。此方法类似于 DOpus.Notify 方法 - 有关此方法的更多信息,请参阅对该方法的说明。 脚本添加图标后,用户可以使用鼠标与此图标进行交互。鼠标活动将在对话框的消息循环中生成 click、dblclk 和 rclick 事件。Msg.control 属性将设置为 notifyicon。 当对话框关闭时,将自动删除该图标。如果资源管理器在添加图标后重新启动,它也会自动还原。 请注意仅支持每个对话框一个图标。 | ||||||||||||||||||||
方法 | 参数 | 说明 | |||||||||||||||||||||
add | <icon>, <tooltip> | 将图标添加到工具栏。 | |||||||||||||||||||||
update | <icon>, <tooltip> | 更新图标或工具提示。 | |||||||||||||||||||||
remove | none | 删除图标。 | |||||||||||||||||||||
notify | <title>, <message>, <flags> | 显示系统通知消息(或 Windows 7 中的气泡工具提示)。 | |||||||||||||||||||||
打开 | <string:title> <string:default> <object:window> | object:Item | |||||||||||||||||||||
请求 | <string:message> <string:buttons> <string:title> <object:window> | int | |||||||||||||||||||||
运行对话框 | none | int | 通过接管并运行默认消息循环,将以前 分离的对话框转换为非分离对话框。在对话框关闭之前,RunDlg 方法将不会返回。如果你使用 Create 创建了对话框,以便初始化其控件,但实际上不想运行交互式消息循环,则可以使用此方法。 返回值与对象的 result 属性相同,表示用户选择的关闭按钮的索引。 如果对话框尚未显示(因为没有调用 Show 或 GetMsg),则在你调用 RunDlg 时,对话框将变为可见。(兼容性说明:在 Opus 12.22 之前,脚本需要显式调用 Show。) | ||||||||||||||||||||
保存 | <string:title> <string:default> <object:window> <string:type> | object:Path | 显示“浏览文件以保存”对话框,以便用户可以选取单个文件或输入新的文件名进行保存。可选参数有:
可选的 type 参数由一个或多个字符串对组成,每个字符串对由感叹号(!)分隔。每一对的第一个字符串为下拉菜单中显示的纯文本字符串,每一对的第二个字符串为实际文件扩展名。你还可以通过分号将其分隔开来,从而为同一种类型指定多个扩展名。如果你希望将默认“所有文件”项添加到列表,则可在字符串开头添加 # 字符。例如, #文本文件!*.txt!文档文件!*.doc. 返回一个 Path 对象,表示用户选择的文件。该对象将具有一个附加 result 属性,如果用户取消了对话框,该属性将为 False,并且其它正常的 Path 属性仅当 result 为 True 时才有效。 | ||||||||||||||||||||
保存位置 | <string:id> | none | 将对话框的位置(和大小)保存到 Opus 配置中。然后可以通过调用 LoadPosition 在以后恢复位置。 通常,你应该在显示对话框之前调用 LoadPosition,并在对话框关闭后调用 SavePosition。 id 字符串是一个字符串,Opus 可以用它来标识你的对话框或其来源的脚本。对话框的模板名称会自动追加到此字符串。例如,你可以将 id 指定为 "kundal" - 然后 Opus 会在内部将名为 "dialog1" 的对话框的位置保存为 "kundal!dialog1". 请确保选择其它脚本作者不太可能使用的字符串,因为 Opus 没有其它方式来区分已保存的位置。 | ||||||||||||||||||||
设定计时器 | <int:period> <string:name> | string | 创建计时器,此计时器会为你的脚本生成周期性的 timer 事件。period 必须以毫秒为单位指定(例如,1000 等于一秒)。 你可以选择为计时器指定 name - 如果你没有提供名称,则系统会自动生成一个名称(并且会返回新计时器的名称)。 | ||||||||||||||||||||
显示 | none | int | 显示使用此对象的各种属性进行预配置的对话框。有关这些属性的完整说明,请参阅上面的“属性”部分。 如果 detach 属性为 False,则在对话框关闭之前,此调用将不会返回。返回值是用户选择的按钮的索引,且方法返回后,此索引也在 result 属性中可用。最左边的按钮索引为 1,下一个按钮索引为 2,依此类推。如果某个对话框有多个按钮,则根据定义最右侧的按钮为“取消”按钮,因此它将返回索引 0。 如果 detach 属性为 True,调用将立即返回,返回空值。然后,您可以运行一个“detached”对话框的消息循环,或调用 RunDlg 运行标准循环。 | ||||||||||||||||||||
SetTaskbarGroup | <string:group> | bool | 用于更改自定义对话框在任务栏上与其它 Opus 窗口分组的方式。指定一个组名以将窗口移至替代组,或省略 group 参数以重置回默认组。如果将一个或多个窗口移至同一个组,它们将被分到一起,与其它默认组分开。 这仅适用于 Windows 7 及以上版本,并且仅在启用任务栏分组时。组名限制在 103 个字符,如果超过则会被截断。组名中的空格和点会自动转换为下划线。 仅适用于自定义脚本对话框(即使用 template 属性时)。必须在创建对话框后调用(即在 Show 被调用之后 - 如果要避免仅为此编写自己的消息循环,请参阅 RunDlg 方法)。 成功时返回 true。 | ||||||||||||||||||||
Vars | <string:id> | object:Vars | 返回一个 Vars 对象,它表示特定对话框的范围变量。这允许脚本从对话框的一种用途持续使用到另一种用途。 id 字符串是一个字符串,Opus 可使用其来标识您的对话框或来自该对话框的脚本。对话框的模板名称将自动附加到此字符串。例如,您可以将 id 指定为 "kundal" - 随后,Opus 会在内部将这些变量保存为名为 "dialog1" 的对话框,格式为 "kundal!dialog1". 确保选择其它脚本作者不太可能使用的字符串,因为 Opus 没有其它方法来区分保存的变量。 | ||||||||||||||||||||
WatchDir | <string:id> <string:path> <string:flags> | int | 建立对某个文件夹或文件进行监视以跟踪改动。返回 0 表示成功,或在失败时返回一个错误代码。 id 参数允许您为该观察器提供一个 ID,当发生变化时用于标识它。dir 是一个文件系统文件夹的完整路径,如果设置了 i 标志,则可以是文件。 可选标志有:
当对受监视的文件或文件夹发生更改时,对话框的消息循环会收到 dirchange 事件。Msg.control 属性标识观察器的 ID。 使用 CancelWatchDir 方法取消监视。 | ||||||||||||||||||||
f | 监视文件夹中的文件更改(例如文件创建) | ||||||||||||||||||||||
d | 监视文件夹中的目录更改(例如目录创建) | ||||||||||||||||||||||
r | 递归 - 监视子文件夹 | ||||||||||||||||||||||
a | 监视文件属性更改 | ||||||||||||||||||||||
s | 监视文件大小更改 | ||||||||||||||||||||||
w | 监视最后写入时间更改 | ||||||||||||||||||||||
i | 监视单个文件,而不是文件夹 | ||||||||||||||||||||||
WatchTab | <object:Tab> <string:events> <string:id> | bool | 允许 脚本对话框 监视文件夹标签页中的事件。您将通过消息循环收到请求的事件的通知。 tab 参数指定要监视的 Tab。events 字符串是您要监视的事件的分隔符列表。id 字符串是可选参数;它允许您为该标签页指定您自己的 ID,以便于了解事件来自何处(例如,如果您正在监视多个标签页)。 您可以监视的事件如下。请注意,其中一些相当于现有脚本事件(例如 OnActivateTab):
建立通知后,当请求的事件发生时,您将收到所有通知。请注意,没有特定的信息与通知一起发送 - 例如,对于“更改”事件,您不会被告知哪些项已更改,只会知道有所更改。 您将在消息循环中收到通知事件。Msg 对象的各种属性允许您确定发生了什么。 对于来自受监视文件夹标签页的通知,Msg.event 属性将设置为 tab。 Msg.control 属性会告诉您更改发生在哪个标签页中;如果您在调用 WatchTab 函数时指定了 ID,则它将位于 Msg.control 属性中 - 否则,它将是标签页的数字句柄。请注意,它*不是*实际 Tab 对象。您可以通过 Msg.tab 属性访问 Tab 对象,但此操作可能效率较低,因为它要求每次都创建一个新的 Tab 对象。如果您只监视一个标签页,最好将其 Tab 对象存储在自己的变量中 - 如果您监视多个标签页,则可以为每个标签页使用一个唯一的 ID,并将对象保存在 Map 中。 Msg.value 属性告诉您发生了哪个通知事件。可能的值包括 select、navigate、filechange、activate、srcdst、view、flat、filter 和 close(如果您在监视标签页时将其关闭,则会发送该事件)。 对于 filechange 事件,Msg.data 属性包含一个位掩码,表示发生了哪些文件事件。1 = 添加,2 = 删除,4 = 更改。这些值会相加(因此,例如,6 表示至少有一项已更改,且至少有一项已删除)。由您的脚本确定具体发生了哪些更改。 您可以再次使用相同的标签和新事件列表调用 WatchTab 方法来更改您正在监视的事件。 要停止监视现有标签页,请调用 WatchTab,并将第二个参数设置为 stop。如果您的对话框关闭(以及标签页关闭),监视将自动取消。 将以下英文文本翻译成中文: | ||||||||||||||||||||
select | 选择或取消选择标签页中的项 | ||||||||||||||||||||||
navigate | 在该标签页中更改文件夹 | ||||||||||||||||||||||
add | 添加项到文件夹 | ||||||||||||||||||||||
delete | 从文件夹中删除项 | ||||||||||||||||||||||
change | 文件夹中的项已更改(大小、日期、名称等) | ||||||||||||||||||||||
activate | 标签页已激活或已停用 | ||||||||||||||||||||||
srcdst | 源/目标状态更改 | ||||||||||||||||||||||
view | 视图模式已更改 | ||||||||||||||||||||||
flat | 平面视图状态已更改 | ||||||||||||||||||||||
filter | 快速过滤器已更改 |
最后更新于