Skip to main content

窗体替换功能

窗体继承的目的,就是为了窗体替换的准确和快捷,使用新窗体替换源窗体,即在运行期任何地方打开源窗体时,会直接映射到新窗体。

举例:若窗体B(新窗体)替换窗体A(源窗体),那么在运行期,打开窗体A时,会自动变成打开窗体B。

【案例下载】

1.概念

image-20210924112817847

  • 新窗体:替换源窗体的窗体。

image-20210924144024042

  • 可继承实体:新窗体中可以引用的源窗体中的实体。

image-20210927141143465

  • 可继承方法:新窗体中可以引用源窗体中的方法,新窗体中执行该方法时,实际上运行的是新窗体中的该方法,在新窗体中可通过事件绑定或执行方法调用。
  • 规则链可见方法:规则链可见但不可继承的方法,该方法作为副本拷贝到新窗体中(相当于是新窗体中的方法),可通过事件绑定,但不可通过执行方法调用。

image-20210927141053336

2.创建源构件

描述

  • 举例:主窗体中有一个操作是打开源窗体A,现在想将源窗体A的内容稍作修改(新窗体B)。

    • component_source(源构件):源窗体的构件

    • component_target(目标构件):替换窗体的构件

image-20210924144849873

源窗体演示:

主窗体演示:

操作步骤:

2.1 可继承

源窗体的窗体页签,点击“窗体继承选项”,弹出“窗体可继承选项设置”窗口,勾选“作为可继承窗体” (可根据业务需求,将某个方法或规则也作为可继承),点击“确定”并”保存窗体”。

image-20210927141053336

2.2 部署构件

部署构件以供其他构件新建窗体时选择引用作为窗体来源。有两个途径:

(1)发布到云空间。

image-20210927143737877

(2)部署到本地,生成本地部署包。

image-20210927143913980

3.创建目标构件

新窗体演示:

3.1 引用构件

(1)从云空间引用构件。

image-20210927144820190

(1)从本地引用构件包。增加引用,在弹出框中点击“从本地选择”按钮,选择需要引用的部署包,点击“确定”。

image-20210927145243139

3.2 引用窗体来源

在目标构件中新建窗体,选择窗体来源,点击“创建”。

image-20210927145931505

image-20210927150053720

注:普通窗体和网页窗体可以一定程度地相互兼容。

  1. 普通窗体:可以继承网页窗体,但会清除网页窗体中的所有div代码,保留窗体的实体和变量。
  2. 网页窗体:可以继承普通窗体,但会清除普通窗体中的所有控件,保留窗体的实体和变量。
  3. 移动窗体:只能继承移动窗体。

3.3 修改窗体

创建完成后,源窗体中的对应的元素会拷贝到新窗体中。

img

修改新窗体中的控件。

img

部署目标构件,打开源构件中的主窗体,点击“打开窗体”按钮,查看效果。

img

3.4 可继承方法

源窗体中可继承的方法,在新窗体中可以直接调用。如:源窗体中的loaddata方法作为可继承,新窗体中可以直接通过控件绑定或执行方法调用该方法,如下,新窗体加载时会触发loaddata规则链的执行。

img

注:新窗体中调用源窗体可继承方法时,实际上是到源窗体中执行该方法,故可继承方法中引用的窗体外部资源,如表、查询、构件方法等,均可正常调用。

4.增加新规则

新窗体演示:

4.1 增加新规则

新窗体可以根据需求增加新的规则逻辑。

如:源窗体的“退出窗体”按钮事件只有一个规则。

image-20210927152054458

可在新窗体里增加退出窗体时的判断逻辑。

image-20210927152202636

点击“退出窗体”按钮时,询问是否确定要关闭。

  • 确定:关闭窗体
  • 取消:中断规则,不关闭窗体

img

5.取消继承(替换)

若新窗体不想再继承源窗体,可以取消继承。

选中新窗体,鼠标右键“编辑”。

img

取消勾选“启用窗体来源”,确定后,保存部署。

img

配置中心-窗体映射配置

image-20210927140644727