DOORS DXL:无法通过全局按钮操作//切换控件的激活/无效

时间:2019-03-06 19:35:08

标签: function ibm-doors

好的,因此,我找到了有关如何使用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

1 个答案:

答案 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。我不确定我是否在任何地方都能看到这些情况的详尽清单。

让我知道这是否有帮助!