Zaam

Замена обработчика.

4 posts in this topic

Дано:

local desc = wtButton:GetWidgetDesc()
local wtNewButton = mainForm:CreateWidgetByDesc(desc)

Спрашивается: как wtNewButton заменить обработчик событий?

 

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

Share this post


Link to post
Share on other sites

Никак. Насколько помню реакция приходит в аддон родитель, и перехватывать эти реакция нельзя. Еще с билдменеджером была проблема, когда приходилось кнопку писать отдельным аддоном и лепить её в стандартный интерфейс, при нажатии кнопка отправляла эвент и основной аддон ловил его и показывался. (Привет ui9) 

Хотя раньше icreator писал, что отслеживал нажатия кнопок в экшен панели то ли по началу действия эффекта, то ли по его окончанию.

Share this post


Link to post
Share on other sites

Насколько помню реакция приходит в аддон родитель, и перехватывать эти реакция нельзя.

Родитель (тот виджет, в котором кнопка рисуется) или владелец (аддон, который кнопку создал)?

Можно попробовать написать

common.RegisterReactionHandler(OnReactionNewButton, "something"), где "something" заменить на содержимое секции <Reaction></Reaction> скопипащенной системной кнопки. Толь вот еще один вопрос - где это содержимое подглядеть.

Share this post


Link to post
Share on other sites

Родитель тот виджет, в котором кнопка рисуется. Т.е. реакция приходит системному аддону, в случае с кнопкой билдменеджера.

Реакции можно посмотреть в исходниках старого клиента.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now