0

Я вызываю класс через элемент меню в GlobalToolsMenu. Вызывающий из моих аргументов всегда имеет значение null, если он вызывается из формы.Получить вызывающий элемент menuitem в глобальном меню

Есть ли способ передать форму в качестве вызывающего?

+0

Какая форма вызывает элемент меню? Вы вызываете пункт меню по коду? –

+0

Элемент меню отображается в каждой форме, поскольку он находится в меню GlobalToolsMenu (строка меню). Он не вызывается кодом. – Bullface

ответ

0

Когда вы открываете пункт меню из GlobalToolsMenu, он не связан с текущей формой, он работает так, как будто вы пытаетесь открыть элемент меню из независимого меню. Если вам нужно получить доступ из вызываемого класса к текущей форме, вам нужно использовать некоторое обходное решение.

E.g. вы можете попробовать позвонить WinAPI::getForegroundWindow() из своего класса, чтобы получить дескриптор в окне переднего плана (форма AX, с которой пользователь в настоящее время работает). Имея ручку, вам нужно найти соответствующий объект FormRun. С этой целью вы можете попробовать настроить \Classes\SysSetupFormRun\init, чтобы сохранить map с отношениями между формальными ручками и объектами FormRun в infolog.globalCache(). Затем вы можете использовать эту кэшированную карту в своем классе, чтобы получить объект FromRun из извлеченного дескриптора.

Смежные вопросы