前几个篇章中,若使用到客户端 (如GDC/GBC) 呈现画面时,Hello World 都只能出现在小小的选单上,备极委屈。为什麽不是在正中间?因为还没开画面呢。
Genero FGL 可以透过 4GL代码来动态产出画面。但是好麻烦。需要有一堆的基础设定 (ui.Window / ui.Form) 与生出元件的功能。因此在过往的 i4GL就已直接采用『表单画面』的套表方式:预铸好画面档,需要使用的时候开一下。如果真的需要微调,再做『合规的』微调。
也就是因为这样的特性,优点是开发快速,程序码精简。缺点是想要设计出特别的画面控件 (widget) 可能需要透过其他技术实现 (例如串用 webcomponent)
OPEN WINDOW WITH FORM 以画出来的FORM作为视窗开启
若开始使用画面,则GDC须保持启动待命。执行时会计算 License
手工维护一个 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维范例。
档案完成後,使用 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.... 指令将讯息呈现在指定的栏位上
有发现吗?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画面元件文件
用背诵指令的开发方法太痛苦,打开 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 的一些基础概念,要画出复杂的画面还是要多参考其他画面的作法。其他较为进阶的则分散在个别主题内叙述。
<<: [CSS] Flex/Grid Layout Modules, part 6
>>: CSS微动画 - 为什麽别人的按钮点起来比较有感觉?
在各行各业工作时,很多人都有因为工作上失误,而被上司责骂的经验,这些必经的过程,被视为「学习」和「记...
移动设备安全政策是防止影子 IT 使用的最佳安全控制。用户教育可促进对安全政策和问题的普遍认识,但应...
实作了商品细节页之後就要把商品加进购物车啦,今天会把要买的东西存进 Laravel 的 Sessio...
Basics of Color Light and Spectra(光和光谱) 可见光(visibl...
非监督式学习 K-means 分群 今日学习目标 非监督式学习 何谓非监督式学习? 集群分析? 分群...