PowerBuilder窗口关闭事件

时间:2014-09-17 06:03:56

标签: powerbuilder powerbuilder.net powerbuilder-pfc

我有一个包含多个标签的MDI窗口。我想要做的是每次用户单击选项卡上的退出按钮时禁用关闭事件。但我不知道如何完成这些。有人可以帮我这个吗?谢谢。

以下是我从上述问题中提到的示例选项卡和退出按钮。

tab.png

这就是我到目前为止所拥有的。每次单击退出按钮时,窗口仍然关闭。

integer ext 
ext = MessageBox("","You are not allowed to close this tab",(Exclamation!),(OK!))

if (ext = 1) then
Open(w_main)
end if

3 个答案:

答案 0 :(得分:0)

我很惊讶您的示例代码甚至可以正常工作。 MessageBox只能以您设置的方式返回一个值。如果您正在检查MessageBox的返回代码,那么您应该将第四个参数设为YesNo!,YesNoCancel!

我认为无论谁做到这一点都不知道他们在做什么,根本没有任何意义,这个逻辑中没有选项。

您希望它成为用户可以回复的问题吗?如果是这样,那么做一些类似的事情:

integer li_rc
li_rc = Messagebox("Confirm your intentions","Do you want to close the tab?",Question!,YesNo!,2) 
if li_rc = 1 then
  // user clicked YES because it is the first option of YesNo!
else
  // user clicked NO because it is the second option of YesNo!
end if

fyi:如果用户按下

,则最后一个参数是默认按钮

该窗口具有closequery事件,该事件在关闭时触发,您可以在该事件中执行处理以使窗口不关闭。我不知道标签是否有这样的东西,但你可以解决这个问题,然后禁止关闭。如果你只是想告诉用户一些东西,那就做MessageBox(“Message Subject”,“Message Body”,Exclamation!),没有必要使用OK!这是默认的

这是一个想法:

查看选项卡控件的单击事件。那里可能有关闭标签的代码。您可以添加其他逻辑来检查权限并绕过结束逻辑。或者,如果用户无法关闭,或者可能显示不同的图片,则可以将ShowPicture属性设置为false。

答案 1 :(得分:0)

无法"禁用关闭事件"但您可以通过编写窗口的CloseQuery事件脚本来禁止请求关闭。在您想要禁止关闭的情况下将脚本返回1,对于您希望关闭继续处理的情况为0。

祝你好运。

答案 2 :(得分:0)

这并不容易。 你应该处理user32.dll api并删除,修改和绘制菜单栏。

打开全局外部函数选项卡并插入:

  

函数uLong GetSystemMenu(object hwnd,boolean bRevert)LIBRARY   “user32.dll”函数uLong RemoveMenu(对象hMenu,long nPosition,   long wFlags)LIBRARY“user32.dll”函数uLong DrawMenuBar(对象   hwnd)LIBRARY“user32.dll”

现在:

menu = GetSystemMenu(window, false) // to disable X
RemoveMenu(menu, HF060, H0)
DrawMenuBar(window)