概述
本文說明為何 FGL_WINMESSAGE 和 FGL_WINQUESTION 對話框會在 Genero 應用程式中造成 UI 阻塞。
函式實作方式
這些工具函式並非內建於執行時期(runtime),而是作為範例提供。它們位於 $FGLDIR/src/fgldialog.4gl,並編譯為 $FGLDIR/lib/fgldialog.42m。
自訂選項
開發人員可以使用自訂實作來建立改良版本。以下是文章提供的範例做法:
FUNCTION my_winmessage(title STRING, text STRING, icon STRING)
MENU title ATTRIBUTES(STYLE="dialog", COMMENT=text, IMAGE=icon)
ON ACTION accept
EXIT MENU
END MENU
END FUNCTION
函式覆寫
開發人員可以在自己的程式碼中建立具有相符簽名的版本,藉此覆寫內建的工具函式,在保持相容性的同時實現自訂行為。
阻塞行為說明
原生實作使用未記錄於文件的樣式前綴 "winmsg",這會通知前端客戶端使用內建的系統對話框。在 GDC(Genero Desktop Client)中,這些對話框為強制回應(modal)模式,會阻止使用者與其他應用程式視窗互動。
覆寫這些函式的理由
- 使用
STYLE="dialog"來消除阻塞行為 - 擴展圖示和選項的範圍,超越預設的有限集合
- 支援應用程式特定的本地化需求
- 統一整個應用程式的對話框外觀
結論
文章強調開發人員不受限於官方提供的工具函式,並鼓勵探索自訂實作的可能性。
原文:https://4js.com/ask-reuben/ig-39/
· 有任何 Genero 技術問題或翻譯疑問,歡迎來信
support@t100.app