Как предотвратить закрытие диалога при нажатии клавиши ввода или выхода?

У меня есть диалоговое окно, которое я хотел бы оставить открытым, кроме случаев, когда нажаты кнопки [x] или выхода. Кажется, что диалоги всегда закрываются, если вы нажимаете escape или Enter, когда выбрано большинство объектов (например, строковые блоки), независимо от того, используете ли вы позу () или display (). Есть ли способ предотвратить это?

Некоторыми общедоступными примерами того, когда это происходит, являются «Пример: Взаимодействие потоков и диалогов» DM Митчелла и «Пример: Диалог с одной кнопкой», но, похоже, они применимы к любому диалоговому окну.

Исключением является закрепленная палитра, но эта функциональность кажется довольно ограниченной в GMS2.3 / GMS3.

Пример кода для тестирования:

class myUItest:UIframe
{
    object Init( object self )
    {
        TagGroup dlgTGitems 
        TagGroup dlgTG = DLGCreateDialog("Modal",dlgTGitems)
        TagGroup dlgField = DLGCreateIntegerField(12,20)
        dlgTGitems.DLGAddElement(dlgField)
        return self.super.init(dlgTG)
    }
}

{
    object DLG = ALLOC(myUItest).Init()
    DLG.Pose()
    DLG.display("Modeless")
}

person AWag    schedule 22.04.2016    source источник
comment
Очень хороший вопрос, спасибо. Я думаю, что сейчас ответ - нет, поскольку диалоги сценариев не могут перехватывать нажатия клавиш, но я немного исследую это.   -  person BmyGuest    schedule 22.04.2016


Ответы (1)


Кажется, не существует способа предотвратить завершение модальных диалогов (представленных с помощью метода Pose UIFrame) с помощью упомянутых вами нажатий клавиш. Однако подойдет ли для вашего приложения немодальный диалог? Такой диалог создается путем вызова метода Display в вашем объекте UIFrame и не закрывается с помощью esc или ввода.

person Mike Kundmann    schedule 22.04.2016
comment
Извините, я должен был быть конкретным. Я использую метод Display (), аналогичный приведенным мною примерам. Они также закрываются с помощью esc или enter. Спасибо! - person AWag; 22.04.2016
comment
Спасибо за указание на это. Похоже, это новое поведение в GMS 3. Когда я запускаю тестовый сценарий в GMS 2.3.2 (888), немодальное диалоговое окно не закрывается, когда я нажимаю «esc» или «ввод». Также кажется, что GMS 3 связывает ключевые действия по умолчанию с одной кнопкой (или, возможно, с текущей кнопкой по умолчанию). Кажется, что нажатие клавиши «Enter» или «пробел» приводит к щелчку по кнопке. GMS 2.3.2, похоже, этого не делает. Это измененное поведение, безусловно, повлияет на несколько моих сценариев. Надеюсь, найдется способ обойти это. - person Mike Kundmann; 23.04.2016
comment
@AWag Измененное поведение немодальных диалогов - это ошибка, о которой сообщалось в версии GMS 3, и она будет возвращена к поведению GMS 2. Дополнительный запрос на возможность общего перехвата нажатий клавиш из диалоговых окон сценариев также был подан благодаря этому вопросу здесь. - person BmyGuest; 24.04.2016