Как управлять отключением / включением кнопки «Свернуть», «Изменить размер» и «Закрыть» в формах оракула? - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно управлять отключением / включением кнопки «Свернуть», «Изменить размер» и «Закрыть» путем программирования родительских форм Oracle в 10g. Пожалуйста, дайте мне решение этой проблемы. введите описание изображения здесь

1 Ответ

0 голосов
/ 11 июля 2018

Существует множество причин, по которым вы можете запретить пользователю изменять размер или закрывать окно MDI приложения. Прекрасным примером будет, если все объекты в приложении имеют фиксированный размер. Возможность изменить размер родительского окна ничего не даст, кроме как открыть неиспользуемое пространство. Попробуйте запустить Microsoft Calculator. Обратите внимание, что вы не можете изменить размер окна. Предотвращение изменения размера пользователями, конечно, не редкость.

Так к решению ...

Если бы вы использовали формы 12.2.1+, это было бы легко. В версии 12 Forms предлагает два новых параметра; «isResizable» и «AlwaysOnTop». Надеюсь, каждый очевиден в том, что они делают. Просто установите TRUE или FALSE и все готово.

Для версии 11 и старше она становится немного уродливой. Я буду предполагать, что вы используете отдельныйFrame = true. Для изменения размера или закрытия вы можете создать Java Bean, но это, вероятно, потребует больше усилий, чем оно того стоит.

В PL / SQL пользователи, пытающиеся закрыть родительское окно (окно отдельного кадра), делают что-то вроде следующего:

  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 свернуто или изменено. Посмотрите в справке по построителю: SYSTEM.EVENT_WINDOW, GET_WINDOW_STATE, WHEN-WINDOW-RESIZE

...