在表单部件中引入了表单及其类型。当前页概述如何显示文本表单。
converse 语句对于允许用户访问单一固定文本表单而言已足够了。仅当用户对显示的表单作出响应之后,程序的逻辑流才会继续。也可以从多个表单构造输出,如下例所示:
- 在输出的顶部,一个固定表单标识了采购公司和订单号
- 在后续的浮动区域中,一系列格式完全相同的浮动表单标识了公司订单中的每件商品
- 在输出的底部,一个固定表单指示了浏览整个商品列表所需的屏幕数
有两个步骤是必需的:
- 首先,通过编写一系列 display 语句来构造订单与商品输出,每一个该语句都将一个表单添加到运行时缓冲区中,但不将数据显示到屏幕上。每个 display 语句都对下列其中一个表单执行操作:
- 顶部表单
- 浮动表单,由一个循环中重复调用的 display 语句显示
- 底部表单
- 接着,作为对下列任何一种情况的响应,EGL 运行时将所有缓存文本表单显示到输出设备:
- 程序运行 converse 语句;或者
- 程序结束。
在大多数情况下,通过编写 converse 语句而不是 display 语句来显示最后一个屏幕输出表单。
每个固定表单都具有屏幕位置,因此您指定它们的顺序(相互之间的顺序以及相对于重复显示的浮动表单的顺序)无关紧要。将输出发送至屏幕时,将擦除缓冲区的内容。
如果让文本表单相互覆盖,不会发生错误,但下列描述是适用的:
- 如果一个部分表单覆盖了另一固定表单的任何行,则 EGL 将替换现有表单,而不从缓冲区中清除其余输出。在显示新表单之前,如果要擦除现有输出,则在对新表单发出
display 或 converse
语句之前调用系统函数 ConverseLib.clearScreen。
- 如果使用 display 或 converse 语句来将浮动映射置于浮动区域的底部之后,则将擦除该浮动区域中的所有浮动表单,并且将把添加的表单置于同一浮动区域的第一行。
- 如果浮动表单覆盖固定表单,则下列描述是适用的:
- 只有浮动区域中的固定表单行才会被浮动表单覆盖
- 如果固定表单行被包含变量字段的浮动表单行覆盖,则结果是不可预测的
无论是显示一个表单还是显示多个表单,输出目标都是用户在开始运行单元时所用的屏蔽设备。