最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

[day10] OPEN WINDOW WITH 画面档

后端代码 bron1984 1981浏览

文章来自:iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)

OPEN WINDOW WITH 画面档

前几个篇章中,若使用到客户端 (如GDC/GBC) 呈现画面时,Hello World 都只能出现在小小的选单上,备极委屈。为什么不是在正中间?因为还没开画面呢。

Genero FGL 可以透过 4GL代码来动态产出画面。但是好麻烦。需要有一堆的基础设定 (ui.Window / ui.Form) 与生出组件的功能。因此在过往的 i4GL就已直接采用『窗体画面』的套表方式:预铸好画面档,需要使用的时候开一下。如果真的需要微调,再做『合规的』微调。

也就是因为这样的特性,优点是开发快速,程序代码精简。缺点是想要设计出特别的画面控件 (widget) 可能需要透过其他技术实现 (例如串用 webcomponent)

OPEN WINDOW WITH FORM 以画出来的FORM作为窗口开启

若开始使用画面,则GDC须保持启动待命。执行时会计算 License

PER

手工维护一个 PER

 

LAYOUT
GRID
{
  Hello World, [who      ]
}
END --GRID
END --LAYOUT

ATTRIBUTES
  EDIT who = FORMONLY.who;
END  --ATTRIBUTE

 

整个PER由 SCHEMA/LAYOUT/TABLES/ATTRIBUTES/INSTRUCTIONS 等常用区块与补充区块 (如 TOPMENU上方选单,TOOLBAR工具栏,ACTION Default功能多语言设定等) 组成。此处选取形成PER的最简易区段LAYOUT + ATTRIBUTES维范例。

  • LAYOUT: 配置画面长相的区块,在这边部署各种画面组件(widget),默认采相对位置呈现(client软件会进行实际呈现的渲染/微调),GRID是最基本的空白画布。
  • ATTRIBUTES:配置LAYOUT中出现的每个widget 属性。包含是甚么widget、名称、宽度与个别的特殊属性。

其他区块的使用说明

档案完成后,使用 fglform 进行编译

fglform hello

若编译有错误时,会提出错误点,依照指示修正即可。PER档案具备向下兼容特性。
搭配微调的 hello.4gl 如下

 

MAIN
  DEFINE who  VARCHAR(20)

  OPEN WINDOW w WITH FORM "hello"      #开新的窗口
  DISPLAY ARG_VAL(1) TO formonly.who   #把数据显示上去

  MENU
     ON ACTION exit
     EXIT MENU
  END MENU
END MAIN

 

编译后以指令 fglrun hello alex 来执行会得到下列执行样态
图形用户界面, 应用程序 描述已自动生成

程序透过 OPEN WINDOW 开启一个新窗口,
使用 DISPLAY …. TO…. 指令将讯息呈现在指定的字段上

screen

有发现吗?FGL 默认自带一个窗口,为『screen』。
若需要使用的是自己所制作的画面,则 screen 可先进行关闭,以节省使用资源。故在较大型的应用作业中,都可以看到初始时就进行 CLOSE WINDOW screen 的指令

同时多画面

FGL允许 OPEN WINDOW 多个,但焦点 (focus)仅能在单一的画面上。也就是说当新开一个画面,焦点会被切过去新的。若要返回其他画面操作,需用 CURRENT WINDOW IS xxx 指定

画面的开关

画面若不需要使用时,建议进行CLOSE WINDOW关闭画面。程序开发时,建议尽量在同一个 function 内进行画面的开/关,避免遗忘关闭 (正常离开程序时会主动先行关闭所有画面,但若客户端-GDC-网络条件不好,则可能被判断为异常终止而不会主动关闭画面)

画面组件种类

Genero FGL提供的画面组件从 1.X 起逐步增加,持续扩增中。个别 widget支持的属性也持续调整。所以此段必须回归到各版的文件参考。下方连结 Genero 3.20 在线文件查看 (例如DATETIME Edit组件在 Genero 3.20版才开始提供)
Genero 3.20画面组件文件

用 Studio 开发画面吧! 4FD的救援

用背诵指令的开发方法太痛苦,打开 Genero Studio把

在 Studio 中为了能实现更好的拖拉开发等操作方式,另行制作了XML为基底的4FD格式。编译时,Studio会先将4FD转换为对应的PER,再由PER进行编译的工作
图形用户界面, 文本, 应用程序 描述已自动生成

GeneroStudio中,支持直接画,与从db汇入生成的作法。后者我们在介绍 fgldbsch时再做说明。启用前者画图时,画面如下
表格 描述已自动生成

引用 FourJs 的学习影片如下:

下列路径还有其他 Studio 培训影片(英文) https://4js.com/training/videos/genero-studio/

4FD 的语法会随着Studio的版本更换而调整。升级时均须透过Genero Studio所提供的工具,进行4FD的升版调整。4FD无法『直接』向下兼容。在少数特殊状况下,也会发生工具无法协助升级的情况,此时就应先转换回 PER 档案,再做『重新汇入为4FD的程序』。
图形用户界面, 应用程序 描述已自动生成

本章节主要在谈 PER/4FD 的一些基础概念,要画出复杂的画面还是要多参考其他画面的作法。其他较为进阶的则分散在个别主题内叙述。

转载请注明:赫非域 » [day10] OPEN WINDOW WITH 画面档