概述
本文說明 Genero 的動態對話框(Dynamic Dialogs)技術,讓開發人員能夠撰寫在編譯時期無需預知資料結構的通用程式碼。
解決的核心問題
動態對話框解決了重複撰寫程式碼的問題——開發人員過去必須針對不同欄位名稱或欄位數量,撰寫多個結構類似的 INPUT 或 DISPLAY ARRAY 陳述式。文章以 query_win() 函式為例,說明過去必須針對每種可能的欄位數量使用獨立的 CASE 陳述式。
核心概念
動態對話框的實作分為兩個階段:
第一階段:定義
使用 ui.Dialog.createInputByName() 等方法建立並設定對話框,並透過 addTrigger() 加入觸發條件。
第二階段:執行
執行一個 WHILE 迴圈,呼叫 nextEvent() 來回應使用者操作。
欄位陣列需要使用動態陣列結構,每個欄位包含名稱(name)和資料型別(datatype)成員。
實作細節
主要方法包括:
setFieldValue()和getFieldValue():用於資料操作getQueryFromField():用於 CONSTRUCT 對話框setCurrentRow():用於陣列操作nextField():用於欄位導覽
實際應用範例
fgl_zoom 程式庫透過 _createConstructByName_ 和 _createDisplayArrayTo_ 等函式展示了動態對話框的應用。這些函式建立了可重複使用的查詢與顯示元件,能處理各種 SQL 結果集,而無需為每種情況撰寫獨立的對話框程式碼。
文章最後指出,雖然通用程式碼看起來較為複雜,但它消除了重複性,並提升了整個應用程式的可維護性。
原文:https://4js.com/ask-reuben/ig-24/
· 有任何 Genero 技術問題或翻譯疑問,歡迎來信
support@t100.app