概述

本文說明為何 FGL_WINMESSAGEFGL_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