GRuSHa Posted February 8, 2015 Share Posted February 8, 2015 Доброго времени суток. Помогите решить проблему. Как аддоном отследить виджет другого аддона? Допустим у меня есть аддон, mainform называется Form1 и мне нужно из другого аддона отследить Form1:IsVisible() как это сделать? Quote Link to comment Share on other sites More sharing options...
Setras Posted February 8, 2015 Share Posted February 8, 2015 Чтобы понять структуру виджетов, используй https://alloder.pro/files/file/101-inspect-widgets/ Виджеты располагаются в виде дерева, начинаясь от stateMainForm, детьми которого являются mainForm'ы аддонов. Если mainForm'ы двух аддонов называются одинаково, то их не отличить друг от друга если не знать наверняка что у одного из них есть ребенок с определенным названием. Хотя могу в чем-то и ошибаться. Например если вызов идет из аддона, который является хозяином одного из двух Form1, то можно использовать выражение :IsEqual(mainForm) чтобы выяснить является ли данная форма (ребенок стейт мейн формы) мейн формой данного аддона. А вообще я бы советовал называть их по-своему, т.е. каждому аддону свое уникальное название. 1 Quote Link to comment Share on other sites More sharing options...
logg Posted February 8, 2015 Share Posted February 8, 2015 local w=stateMainForm:GetChildChecked( "Имя аддона прописанное в MainForm", true ):GetChildChecked( "Скорее всего MainPanel", true ) w:IsVisible() 1 Quote Link to comment Share on other sites More sharing options...
Vitus Posted February 12, 2015 Share Posted February 12, 2015 Если известно имя виджета, то можно подписаться на изменение состояния его видимости. wtContextShipPlate = (common.GetAddonMainForm( "ContextShipPlate" )):GetChildChecked( "Plate", false ) wtContextShipPlate:SetOnShowNotification(true) common.RegisterEventHandler(VisibleContextShipPlate, "EVENT_WIDGET_SHOW_CHANGED") Quote Link to comment Share on other sites More sharing options...
Recommended Posts