如何在Oracle表单中管理禁用/启用“最小化,调整大小和关闭”按钮?

时间:2018-07-01 06:45:56

标签: oracle oracle10g oracleforms

我需要通过以10g的oracle mdi父窗体进行编程来管理禁用/启用“最小化,调整大小和关闭”按钮。请给我解决这个问题的方法。 enter image description here

1 个答案:

答案 0 :(得分:0)

您可能有很多原因想要阻止用户调整大小或关闭应用程序的MDI窗口。一个完美的例子是应用程序中的所有对象都具有固定大小。能够调整父窗口的大小只会暴露未使用的空间。尝试运行Microsoft计算器。请注意,您无法调整其窗口大小。防止用户调整大小的情况并不少见。

一个解决方案...

如果您使用的是Forms 12.2.1+,这将很容易。在v12中,Forms提供了两个新参数。 “ isResizable”和“ alwaysOnTop”。希望每个人在他们的工作中都是显而易见的。只需将其设置为TRUE或FALSE,然后完成即可。

对于v11及更高版本,它变得有点难看。我假设您使用的是splitFrame = true。要调整大小或关闭大小,您可以创建一个Java Bean,但这可能要花很多功夫。

在PL / SQL中,试图关闭父窗口(separateFrame窗口)的用户执行以下操作:

  1. 创建一个Alert对象并将其命名为“ PAUSE_EXIT”。警报应包含两个按钮(例如,是/否)。

  2. 创建一个窗体级WHEN-WINDOW-CLOSED触发器并添加以下内容:


do_key('EXIT');
  1. 创建一个表单级别的KEY-EXIT触发器,并添加如下内容。您将不得不对其进行调整以在您的应用中执行正确的操作。您将需要考虑模块中的所有“窗口”。

DECLARE
    al_id Alert; 
    al_button NUMBER; 
BEGIN 
    IF :System.Event_Window = 'FORMS_MDI_WINDOW' THEN
        al_button := Show_Alert('PAUSE_EXIT'); 
    IF al_button = ALERT_BUTTON1 THEN 
        -- User selected YES, so exit.
        EXIT_FORM; 
    ELSE
        -- User selected NO, so don't exit.
        RAISE Form_Trigger_Failure; 
    END IF; 
ELSE
    -- User attempted to close a form window and not the MDI window 
    -- Remove NULL and do something else if not the MDI window
    NULL;
END IF;
END;

可以使用类似的方法来检测MDI窗口是否已最小化或调整了大小。在Builder帮助中查找以下内容:SYSTEM.EVENT_WINDOW,GET_WINDOW_STATE,WHEN-WINDOW-RESIZE