0

可能重复:
OpenEdge ABL 在粘贴一定时间后自动关闭是/否消息

我有一个是/否消息框,我想在 14 秒后清除它。我相信这样做的第一步是获取消息框的句柄,以便我可以让它消失

4

2 回答 2

1

恐怕简单的答案是“你不能”。

这不是 Progress 的限制,无论您使用哪种编程语言,它都是 Windows 消息框固有的。消息框对于父应用程序是模态的,这意味着您的应用程序会冻结,直到消息框关闭。无论您编写什么代码来关闭消息框,它都不会在消息框打开时运行。

不那么简单的答案提供了两种可能性:在显示模态表单时让应用程序的一部分不冻结需要多线程,我们不会在礼貌的公司中谈论它。另一种选择是将消息框显示为非模式,即它不会冻结您的应用程序。要实现这一点,您不能使用 MESSAGE VIEW-AS ALERT-BOX,因为它始终是模态的。您必须创建自己的消息框 - 一个可以根据需要显示和隐藏的窗口或框架。

我更喜欢使用框架而不是窗口。禁用默认框架,显示包含是/否按钮的消息框架。您的应用程序未冻结,但用户只能与消息框进行交互。当用户单击按钮或时间到时,隐藏消息框架并再次启用默认框架。

FRAME Message-Frame:VISIBLE = TRUE.
FRAME default-frame:SENSITIVE = FALSE.
  /* do your thing */
FRAME Message-Frame:VISIBLE = FALSE.
FRAME default-frame:SENSITIVE = TRUE.

请记住将消息框架的 TOP-ONLY 属性设置为 TRUE,否则它不会出现在默认框架之上。

于 2012-02-14T13:37:55.880 回答
0

可以使用小部件的句柄,或直接管理它,如下所示:

DEF VAR ch-field AS CHARACTER.

DEF FRAME f-test 
    ch-field.


ch-field:Visible = yes.

pause 14 no-message.

ch-field:visible = no. 

或者 - 获取小部件的句柄,然后根据需要设置它的“可见”属性。

于 2012-02-08T16:05:10.257 回答