Skip to main content

在可视化中调用对话框

您可以为可视化配置用户输入,以将可视化作为对话框打开。例如,用户单击一个按钮,该按钮打开一个对话框并提示输入值。对话框用于获取用户输入,并且(如果是模态的)它可以阻止对话框外的输入。

仅可视化 对话 可视化类型可以作为对话框打开。您在 特性 可视化对象的对话框。

过程. 主要程序

要求:项目中存在主可视化和对话框。

  1. 使用 打开对话 对话框的动作。

    对话框打开已配置。

  2. 为对话框的元素配置用户输入 关闭对话框 行动。

    提示:对于非模态对话框,您也可以将用户输入配置为在对话框之外关闭。

    对话框关闭已配置。

提示

您可以使用库中的对话框,而不是创建自己的对话框。例如,当 VisuDialogs 库集成在项目中,您可以使用包含的对话框 VisuDialogs.Login 要么 VisuDialogs.FileOpenSave.

  1. 在里面 设备 查看,选择对象,打开上下文菜单,然后单击 特性.

  2. 点击 可视化 标签。

  3. 选择 对话 选项并单击 好的 关闭对话框。

    可视化具有 对话 可视化类型,可以这样调用。

对于对话框调用,用户通常单击打开对话框并提示输入的按钮。

在以下示例中,对话框显示为日历并允许输入日期。

要求:项目包括可视化 visMaindlgCalender.

  1. 设置可视化类型 dlgCalender 对话。

  2. 将一个矩形拖到可视化中 visMain.

  3. 配置 文本 → 文本 带有文本的属性 Due date: %t[yyyy-MM-dd].

    配置 文本变量 → 文本变量 财产与 PLC_PRG.dateDue.

  4. 将按钮拖动到可视化。

  5. 配置 文本 → 文本 带有文本的属性 Open dialog.

    配置 输入配置 → OnMouseClick 财产为 打开对话框 采取行动 dlgCalender.

    用于打开对话框的用户输入已配置。

  6. 双击 dlgCalender 对话。

  7. 拖动一个 日期选择器 元素到可视化编辑器。

  8. 配置 文本 → 文本 财产与 Due date: %t[yyyy-MM-dd].

    配置 多变的 财产与 PLC_PRG.dateCalender.

    元素已配置。

  9. 将按钮拖动到可视化编辑器。

  10. 配置 文本 → 文本 财产与 OK.

  11. 配置 输入配置 → OnMouseClick 财产为 关闭对话框 采取行动 dlgCalender, Result: OK.

  12. 配置另一个 输入配置 → OnMouseClick 财产为 执行 ST 代码 采取行动 PLC_PRG.dateDue := PLC_PRG.dateCalendar;.

    配置关闭对话框的用户输入。

  13. 将另一个按钮拖到可视化编辑器中。

  14. 配置 文本 → 文本 财产与 Cancel.

  15. 配置 输入配置 → OnMouseClick 财产为 关闭对话框 采取行动 dlgCalender, Result: Cancel.

    配置取消对话框的用户输入。

  16. 编译、下载并启动应用程序。

    _visu_img_dlg_calendar.png

变量声明

PROGRAM PLC_PRG
VAR
    dateDue : DATE := DATE#2000-01-01;
    dateCalendar : DATE;
END_VAR                    

您可以通过应用程序代码或从应用程序打开一个对话框。为了方便访问,请使用从 VisuUtils 图书馆。当你打开 VisuUtils 在库管理器中,您可以按内容扫描库并访问库文档。

您可以通过功能块打开和关闭对话框 FbOpenDialog, FbOpenDialogExtended, 和 FbCloseDialog 从图书馆 VisuUtils.如果对话框打开或关闭 全球, 那么参数 itfClientFilter := VU.Globals.AllClients 必须在调用功能块时设置。然后该对话框同时出现或消失在可视化管理器下方配置的所有显示变体上。

提示

CODESYS V3.5 SP10 及更低版本,您只能通过内部对话框管理器的功能实现对对话框的编程访问。在 V3.5 SP11 及更高版本中,您拥有 VisuUtils 图书馆。

在此示例项目中,对话框通过 “” 中的接口以编程方式访问Visu Utils” 图书馆。在那里,你可以看到打开对话框或向对话框传递参数是如何实现的