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