好的,因此,我找到了有关如何使用DXL启用/禁用(活动/非活动)控件的有用答案,但是现在我觉得我有一个我不了解的问题,相对于该命令的顺序加载了哪些功能。
问题:创建对话框时,我有两个按钮,其中一个按钮在创建后不久就处于非活动状态。当我按下按钮1时,我想强制按钮2处于活动状态,但是,我收到一条错误消息,指出未分配按钮2,这很奇怪,因为它是在全局声明并在主函数中设置的。所以,我在做什么错??
这是我的代码...
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
答案 0 :(得分:1)
好吧!
这是一个非常简单的问题,但是我将花一点时间来解释正在发生的事情。
在DOORS中,有两种完成对话框并显示给用户的方法:
var dialog = $('<p>Cannot post. </p>').dialog({
height: 150,
width: 300,
buttons: {
"Ok": function(event) {
event.preventDefault();
dialog.dialog('close');
$(this).display = 'none';
}
}
});
或
show(DB box)
第一个显示对话框,但DOORS界面的其余部分仍处于“活动”状态。在“显示”之后将不会执行任何代码-一切都必须在对话框内置的回调中进行。
第二个显示对话框,但冻结DOORS界面的其余部分,直到关闭对话框或调用释放功能。关闭对话框后,DXL程序将继续。
现在,在您的程序中,您使用了“实现”命令。这用于基本上配置对话框的视觉效果,但实际上并未正确设置按钮和子功能。然后,您的setSize出现并设置了要显示的对话框,但是您仍然需要显示-请参阅以下内容。
block(DB box)
还有块示例:
//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
有一些DOORS函数需要您完成一个Achieve()才能配置对话框元素(在调用show()或block()之前)-例如,将列添加到列表视图DBE。我不确定我是否在任何地方都能看到这些情况的详尽清单。
让我知道这是否有帮助!