Form调用另一个Form

本文详细介绍了如何利用Form API中的call_form、new_form和open_form方法来实现表单的调用,包括各个参数的作用及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明
Form调用Form是我们经常回遇到的问题。可以使用Form提供的API来实现。在Form的API中提供了如下几个api实现form调用。
|-call_form
|-new_form
|-open_form

call_form打开一个新的form。不过保持父form的状态。形式如下:
CALL_FORM(formmodule_name VARCHAR2,display NUMBER, query_mode NUMBER, paramlist_name VARCHAR2);
参数说明:
ormmodule_name:form的名字。
display:调用之前是否隐藏
query_mode:是否允许用户在新的form上进行增删改查的操作。
parameterList_name:form的参数。Parameterlist对象。
new_form直接替换掉应用程序中的当前的form。
NEW_FORM(formmodule_name CHAR,rollback_mode NUMBER,query_mode NUMBER,parameterList_name CHAR);
其中formmodule_name是必须的参数。其他参数可选。
formmodule_name:指具体的form名字,有路径时需要加上。
rollback_mode:表示form在没有提交后是否回滚。包含三个可选值:TO_SAVEPOINT、NO_ROLLBACK、FULL_ROLLBACK。
query_mode:是否允许用户在新的form上进行增删改查的操作。
parameterList_name:form的参数。Parameterlist对象。
new_form还有其他的重载形式。不过参数的含义均相同!
open_form同时打开多个form在同一个应用中。形式如下:
OPEN_FORM(formmodule_name VARCHAR2,activate_mode NUMBER,session_mode NUMBER, paramlist_id PARAMLIST);
参数说明:
formmodule_name与paramlist_id和上面两个procedure一样。
activate_mode:设置焦点,使窗口激活。
session_mode:是否和父form分享session。
 
三个的区别在于call_form打开一个form,但是父form还在存在,new_form是新开一个form,原来的form就不存在了,open_form则是父form和子form一同存在应用中。
举例

declare  
pl_id               paramlist;
begin
   pl_id := Get_Parameter_List('plReport'); 
  IF NOT Id_Null(pl_id) THEN 
    Destroy_Parameter_List( pl_id ); 
  END IF; 
  pl_id := Create_Parameter_List('plReport'); 
 
   Add_Parameter(pl_id,'P_ORGANIZATION_ID',TEXT_PARAMETER,:PARAMETER.P_ORGANIZATION_ID);
   Add_Parameter(pl_id,'P_STOCK',TEXT_PARAMETER,:PARAMETER.P_STOCK);  
  Add_parameter(pl_id,'P_REPORT_SERVER',text_parameter,v_server);
      
  IF :GTINVCP.RAD_GRP = 1 THEN
           call_form (:PARAMETER.P_PROG_PATH||'FORM//GTOEFHQK1_HL.fmx', HIDE, DO_REPLACE,NO_QUERY_ONLY,pl_id);
   ELSIF :GTINVCP.RAD_GRP = 2 THEN
           call_form (:PARAMETER.P_PROG_PATH||'FORM//GTOEFHQK2_HL.fmx', HIDE, DO_REPLACE,NO_QUERY_ONLY,pl_id);
 END IF;
exception
         when others then
           null;
end;

 
说明:
申明部分:
pl_id               paramlist;        申明一个paramlist类型的对象,用于传递参数。

创建参数

pl_id := Get_Parameter_List('plReport'); 
  IF NOT Id_Null(pl_id) THEN 
    Destroy_Parameter_List( pl_id ); 
  END IF; 
  pl_id := Create_Parameter_List('plReport'); 

 
创建在各paramlist对象。
赋值

Add_Parameter(pl_id,'P_ORGANIZATION_ID',TEXT_PARAMETER,:PARAMETER.P_ORGANIZATION_ID);
          Add_Parameter(pl_id,'P_STOCK',TEXT_PARAMETER,:PARAMETER.P_STOCK);  
Add_parameter(pl_id,'P_REPORT_SERVER',text_parameter,v_server);

   
将form需要的参数添加到paramlist对象中
调用

IF :GTINVCP.RAD_GRP = 1 THEN
           call_form (:PARAMETER.P_PROG_PATH||'FORM//GTOEFHQK1_HL.fmx', HIDE, DO_REPLACE,NO_QUERY_ONLY,pl_id);
 ELSIF :GTINVCP.RAD_GRP = 2 THEN
            call_form (:PARAMETER.P_PROG_PATH||'FORM//GTOEFHQK2_HL.fmx', HIDE, DO_REPLACE,NO_QUERY_ONLY,pl_id);
 END IF;

 

这里使用call_form调用,当子form退出的时候,返回到父form。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值