iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Software Development

Genero Packages - 可接替4GL的LowCode商業語言系列 第 10

[FGL] 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 來執行會得到下列執行樣態
https://ithelp.ithome.com.tw/upload/images/20210911/20051169scDHE3MspZ.png

程式透過 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進行編譯的工作
https://ithelp.ithome.com.tw/upload/images/20210911/20051169NIHyX3vufl.png

GeneroStudio中,支援直接畫,與從db匯入生成的作法。後者我們在介紹 fgldbsch時再做說明。啟用前者畫圖時,畫面如下
https://ithelp.ithome.com.tw/upload/images/20210911/20051169wpKPJnxmWc.png

引用 FourJs 的學習影片如下:

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

4FD 的語法會隨著Studio的版本更換而調整。升級時均須透過Genero Studio所提供的工具,進行4FD的升版調整。4FD無法『直接』向下相容。在少數特殊狀況下,也會發生工具無法協助升級的情況,此時就應先轉換回 PER 檔案,再做『重新匯入為4FD的程序』。
https://ithelp.ithome.com.tw/upload/images/20210911/20051169cXk2ntJRfk.png

本章節主要在談 PER/4FD 的一些基礎概念,要畫出複雜的畫面還是要多參考其他畫面的作法。其他較為進階的則分散在個別主題內敘述。


上一篇
[GAS] 啟動配置檔as.xcf設定詳解
下一篇
[FLM] Genero的License授權
系列文
Genero Packages - 可接替4GL的LowCode商業語言32

尚未有邦友留言

立即登入留言