Показать сообщение отдельно
Старый 25.01.2024, 18:17   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
TemporaryFormName - поймать в классе метод формы
Привет всем.
Задачка
Аксапта 2012 R3

Есть самописный класс лукапа (копия SysTableLookup со своими переделками)
В нем потребовалось запретить лукапу закрываться по клику на нем.
Ну, как обычно, хотим перехватит close, closeSelect и не дать уйти в super. Но там используется псевдоформа TemporaryFormName, которой нет в АОТ.

Попробовал применить controlMethodOverloadObject а оно не работает для методов формы close, closeSelect
Для контролов работает.
Видимо предназначено только для ловли методов контролов.

Мне это показалось странным. Был же сарайчик. Должна же быть возможность перехватить.

P.S. Сделал иначе - создал в АОТ свою форму MyTemporaryFormName
Прописал ее в классе. Методы все также не перехватываются в классе, но поскольку форма существует в аот, то можно в ней в методах close, closeSelect прописать нужный код.

P.P.S. Видел еще в 4-ке метод \Classes\TableLookup_RU\waitAndSearch
там жестко через WinApi идет работа. Но мне казалось что можно попроще средствами платформы 12-ки сделать.

P.P.P.S. В 2009-й еще были \Classes\SysSetupFormRun\addListener_W
добавляла к форме обработчик и тогда к нему приходили события на init / run формы
Но в 12-ке это похоже выпилили
Да и это были просто подписчики на события они не позволяли логику менять
т.е. не подходит этот костыль.

В общем, ощущение, что я просто что-то неправильно сделал и методы формы можно перехватить в управляющем классе и можно обойтись без создания своей формы лукапа в AOT