Function DOORS DXL:无法操作全局按钮//切换控制活动/非活动
好的,我找到了关于如何使用DXL启用/禁用(活动/非活动)控件的有用答案,但是现在我觉得我有一个我不理解的问题,不知怎么的,与函数的加载顺序有关 问题:当我创建一个对话框时,我有两个按钮,其中一个按钮在创建后不久处于非活动状态。当我按下按钮1时,我想强制按钮2激活,但相反,我得到一个错误,说明按钮2未分配,这很奇怪,因为它是全局声明的,并在主函数中设置的。那么,我做错了什么 这是我的密码Function DOORS DXL:无法操作全局按钮//切换控制活动/非活动,function,ibm-doors,Function,Ibm Doors,好的,我找到了关于如何使用DXL启用/禁用(活动/非活动)控件的有用答案,但是现在我觉得我有一个我不理解的问题,不知怎么的,与函数的加载顺序有关 问题:当我创建一个对话框时,我有两个按钮,其中一个按钮在创建后不久处于非活动状态。当我按下按钮1时,我想强制按钮2激活,但相反,我得到一个错误,说明按钮2未分配,这很奇怪,因为它是全局声明的,并在主函数中设置的。那么,我做错了什么 这是我的密码 pragma runLim,10000 DB main_dialog = null DBE main_bu
pragma runLim,10000
DB main_dialog = null
DBE main_button1 = null
DBE main_button2 = null
void toggle_visibility_other_button(DBE dbe)
{
active(main_button2)
}
void do_something(DBE dbe)
{
infoBox "UNDER CONSTRUCTION"
}
void main_function()
{
main_dialog = create("My GUI", styleCentered)
main_button1 = button(main_dialog, "Button 1", toggle_visibility_other_button)
main_button2 = button(main_dialog, "Button 2", do_something)
inactive(main_button2)
realize(main_dialog)
setSize(main_dialog, 300, 150)
}
main_function
好的
这是一个非常简单的问题,但我将花一秒钟来解释发生了什么
在DOORS中,有两种方法可以完成对话框并将其显示给用户:
show(DB box)
或
第一个显示对话框,但DOORS界面的其余部分仍然是“活动”的。“显示”后不会执行任何代码-所有内容都必须在对话框中内置的回调中执行
第二个对话框显示对话框,但冻结DOORS界面的其余部分,直到对话框关闭或调用释放功能。关闭对话框后,DXL程序将继续
现在,在您的程序中,您使用了“实现”命令。这主要用于配置对话框的视觉效果,但实际上并没有正确设置按钮和子功能。然后,您的setSize出现了,并将对话框设置为显示,但您仍然需要显示-请参见下面的内容
//Show example
pragma runLim,10000
DB main_dialog = null
DBE main_button1 = null
DBE main_button2 = null
void toggle_visibility_other_button(DBE dbe)
{
active(main_button2)
}
void do_something(DBE dbe)
{
infoBox "UNDER CONSTRUCTION"
}
void main_function()
{
main_dialog = create("My GUI", styleCentered)
main_button1 = button(main_dialog, "Button 1", toggle_visibility_other_button)
main_button2 = button(main_dialog, "Button 2", do_something)
inactive(main_button2)
realize(main_dialog)
setSize(main_dialog, 300, 150)
// Added This
show(main_dialog)
print "Ran it!"
}
main_function
块示例:
//block example
pragma runLim,10000
DB main_dialog = null
DBE main_button1 = null
DBE main_button2 = null
void toggle_visibility_other_button(DBE dbe)
{
active(main_button2)
}
void do_something(DBE dbe)
{
infoBox "UNDER CONSTRUCTION"
}
void main_function()
{
main_dialog = create("My GUI", styleCentered)
main_button1 = button(main_dialog, "Button 1", toggle_visibility_other_button)
main_button2 = button(main_dialog, "Button 2", do_something)
inactive(main_button2)
realize(main_dialog)
setSize(main_dialog, 300, 150)
// Added This
block(main_dialog)
print "Ran it!"
}
main_function
有些DOORS函数要求您完成realize()以配置对话框元素(在调用show()或block()之前)-例如向listview DBE添加列。我不确定我在任何地方都见过这样的情况
让我知道这是否有帮助 嘿@TheKirkwoods,如果你觉得Russel已经回答了这个问题,你可以将其标记为已接受。这让其他人知道它解决了问题,同样,知道它是否起作用也很有用,这样我们可以尝试提供更多帮助
//block example
pragma runLim,10000
DB main_dialog = null
DBE main_button1 = null
DBE main_button2 = null
void toggle_visibility_other_button(DBE dbe)
{
active(main_button2)
}
void do_something(DBE dbe)
{
infoBox "UNDER CONSTRUCTION"
}
void main_function()
{
main_dialog = create("My GUI", styleCentered)
main_button1 = button(main_dialog, "Button 1", toggle_visibility_other_button)
main_button2 = button(main_dialog, "Button 2", do_something)
inactive(main_button2)
realize(main_dialog)
setSize(main_dialog, 300, 150)
// Added This
block(main_dialog)
print "Ran it!"
}
main_function