如何管理 oracle 表单中的 disable/enable 最小化、调整大小和关闭按钮?

How to manage disable/enable Minimize,Resize and Close button in oracle forms?

我需要通过在 10g 中的 oracle mdi 父窗体中编程来管理 disable/enable 最小化、调整大小和关闭按钮。请给我解决这个问题。 enter image description here

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

所以要解决...

如果您使用的是 Forms 12.2.1+,这会很容易。在 v12 中,Forms 提供了两个新参数; "isResizable" 和 "alwaysOnTop"。希望每个人在他们所做的事情上都是显而易见的。简单设置为 TRUE 或 FALSE 即可完成。

对于 v11 及更早版本,它变得有点难看。我假设您使用的是 separateFrame=true。要调整大小或关闭,您可以创建一个 Java Bean,但这可能会比它值得付出更多的努力。

在 PL/SQL 中,用户试图关闭父级 window(separateFrame window),执行如下操作:

  1. 创建一个警报对象并将其命名为 "PAUSE_EXIT"。警报应包含两个按钮(例如 Yes/No)。

  2. 创建一个表单级别的 WHEN-WINDOW-CLOSED 触发器并添加:


do_key('EXIT');
  1. 创建表单级 KEY-EXIT 触发器并添加如下内容。您必须调整它才能在您的应用程序中做正确的事情。您需要考虑模块中的所有 "windows"。

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 window 是否已最小化或调整大小。在 Builder 帮助中查找这些内容:SYSTEM.EVENT_WINDOW、GET_WINDOW_STATE、WHEN-WINDOW-RESIZE