当我从另一个窗体调用一个窗口时,它显示两个窗口一个在另一个的顶部

Posted

技术标签:

【中文标题】当我从另一个窗体调用一个窗口时,它显示两个窗口一个在另一个的顶部【英文标题】:When I Call a Window From an Another Form, It Shows Two Windows One on the Top of the Other 【发布时间】:2019-04-30 13:20:44 【问题描述】:

我有两个表格:表格A和表格B。画布“主页”属于表格A,上面有两个按钮。当我按下第一个按钮时,我想在 Form B 上调用“Window 1”,如果我按下第二个按钮,我想在 Form B 上调用“Window 2”。

现在,如果我按下第一个按钮,我会看到窗口 1。但如果我按下第二个按钮,我会在窗口 1 的顶部看到窗口 2。为什么?

这是第二个按钮的“WHEN-PUSH-BUTTON”触发器。 (第一个按钮的“WHEN-PUSH-BUTTON”触发器是一样的):

DECLARE
   user_form       VARCHAR2 (100);
   param_list_id   paramlist;
BEGIN     

   :parameter.PRMTR := '2';  

   param_list_id := CREATE_PARAMETER_LIST ('param_data');

   ADD_PARAMETER (param_list_id,
              'PRMTR',
              text_parameter,
              TO_CHAR ( :parameter.PRMTR));


   user_form := '/home/oracle/program/formb.fmx';


   CALL_FORM (user_form,
          hide,
          do_replace,
          no_query_only,
          param_list_id);          

   DESTROY_PARAMETER_LIST ('param_data');

END;

这是表单 B 的“WHEN-NEW-FORM-INSTANCE”触发器:

IF :parameter.PRMTR = '2' THEN          


    GO_BLOCK('DATABLOCK_TWO');


ELSIF :parameter.PRMTR = '1' THEN

    GO_BLOCK('DATABLOCK_ONE');


END IF;

【问题讨论】:

【参考方案1】:

可以在form B的when-new-form-instance触发器中放入HIDE_VIEW命令来隐藏第一个窗口。

【讨论】:

在进入 when-new-form-instance 之前显示 Window 2。虽然我知道这一点,但我尝试了它并没有奏效。我猜这个问题与数据块/画布/窗口属性有关。但我没找到。【参考方案2】:

无论如何打开Window 1的原因是Window 1的数据块在所有数据块之上。

据我了解,以这种方式不可能从另一个窗体调用两个单独的窗口。我在 Form B 上创建了一个主窗口并在其上移动了按钮。我从表格 A 中调用了这个主窗口。它起作用了。

【讨论】:

以上是关于当我从另一个窗体调用一个窗口时,它显示两个窗口一个在另一个的顶部的主要内容,如果未能解决你的问题,请参考以下文章

c#里面如何显示下一个窗体而关闭当前窗体?

如何从另一个窗口访问一个窗口的小部件?

Angular 6 - 从另一个组件调用模态窗口组件

C#中两个窗体间的函数调用

当我从另一个类调用数组时,数组不会更新

关闭时从另一个应用程序打开 Spotify 主窗口