1 分类
窗体用于组织用户界面,HMI上的各种控件、元器件、图形、文字等需要放在窗体来显示。
- 普通页 ~ 最常使用的页面
- 公共页 ~ 后台页,通常用于放在长期后台运行的控件,最多一个
- 屏保页 ~ 用于显示屏保,最多一个
- 输入法 ~ 提供用户定制数字输入页,最多一个
2 层次、打开方式、透明度
2.1 层次关系
显示层次如下图所示,
2.2 打开方式
仅对普通页面有效
1) 普通页
普通页面支持以下几种打开方式,
方式 |
描述 |
新建方式 |
创建前清除所有已经显示的普通页,节省内存资源,同时关联的设备变量不再参与设备通讯,提高通讯效率。 |
弹出方式 |
在当前页面上一层创建新的页面,用于弹窗显示。 |
嵌入方式 |
创建新页面并嵌入到当前页面中的某个面板控件中。 |
组态时通常在按钮或元件的事件处理中使用,
2) 公共页
(如果有公共页)在APP启动时自动创建并放在所有普通页面的最下面。
3)屏保页
(如果有屏保页)弹出屏保页时出所有页面的最上面。如果开发者启用屏保但未创建屏保页,会自动使用内置屏保页。
4)输入法
结合数值输入元件使用,弹出在当前页的上面。
2.3 透明度
透明度:
- 页面默认是不透明的,如果某个页面设置为透明或半透明,则会显示下面的页面画面。
- 普通页、公共页、屏保页、输入法页面都可以设置透明度;
2.4 关闭
在关闭页面操作时要明确知道目标对象页面层级关系,合理选择关闭方式,
一般用在当前页面采用弹窗方式时关闭自己用。
3 普通页
普通窗体]是最常被使用的窗体类型。 在“控件面板”上点击页面控件按钮创建窗体。
提示:普通窗体可以自定义大小,如果大小比屏幕分辨率大将变为可拖动的。
属性
项目 |
描述 |
控件 |
窗体ID,唯一,不可修改 |
描述 |
|
|
|
大小 |
窗体大小 |
窗体标题 |
该页面标题,可编辑修改 |
主背景 |
设置背景的主色、填充色、渐变样式、不透明度或者使用图片,图片会拉伸到整个页面 |
事件处理 |
窗体拥有以下几个特殊事件: 1)onInit 打开窗体前,用户可在onInit方法做额外初始化工作 2)onLoad 打开窗体后,用户可在onLoad方法添加其它处理代码 3)onClosing 关闭窗体前,用户可用做需要的判断和处理 4)onDispose 关闭窗体后,用户可用销毁或释放系统资源 |
参考视频:
4 公共页
公共窗体主要是用来存放一些程序运行后不希望销毁的资源,例如定时器、串口控件、打印机等,公共窗体在程序运行后永远不会被关闭,它始终运行在所有窗体的最下层。
从其它页面访问公共页控件
假设公共页中有一个串口控件(wMCom1),如果我们要在其它页面中使用这个串口控件来发送串口指令,可以如下实现:
1. 在当前页面中包含公共页头文件
#include "Frm01.h"
//下面是添加的公共页头文件
#include "Wcmn.h"
2. 使用公共页串口控件发送指令
void Frm01::wMButton1_clk_cb(uint16_t code, LvEvent e) {
/*wMButton1(功能键)的点击事件*/
//获取公共页
Wcmn* cmnPage = (Wcmn*) hmiApp->cWnd;
//下面只是举例,发送指令
vector<uint8_t> cmd;
cmnPage->wMCom1->writeData(cmd);
}
整个应用代码截图如下所示:
5 屏保页
系统默认有一个屏保页,当新建一个[屏保窗体]时,该页面将自动变成屏保页面。
注:屏保页只能新建一个。
参考视频:
6 输入法
当变量或者文本需要录入时,系统自带小写、大写、数字、符号与数字、T9拼音、K26拼音键盘。这些键盘弹出时的宽度是HMI分辨率宽度,高度是HMI分辨率高度的一半,当录入控件在屏幕的下半部分时,为了不遮挡录入效果,整个页面会向上移动留下来屏幕的一半存放弹出键盘。当用户不满意这种效果时,用户可以自定义输入法页实现录入。
默认输入法页如下图示: