События "on open do" и "on close do" у RolloutFloa, Проблемка ... |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
События "on open do" и "on close do" у RolloutFloa, Проблемка ... |
16/01/2018, 03:43
Сообщение
#1
|
|
MaxMan Группа: Пользователи Сообщений: 170 Регистрация: 17/06/2002 Из: Москвы Пользователь №: 19 |
Доброго времени суток, уважаемые форумчане!
Вот нежданно и негаданно, столкнулся с пустяковой, на первый взгляд, проблемой ... На протяжении долгого времени, от случая к случаю, пишу один скрипт под себя. В этом скрипте полно различных инструментов (кнопки, спиннеры, списки и т.д.), которые сгруппированны в 4 группы. Когда я только начинал писать этот скрипт, я даже и предположить не мог, что он получится у меня таким объёмным. А теперь о проблеме: до недавнего времени, этот скрипт, а правильнее сказать Rollout, выводился у меня на экран с помощью команды CreateDialog. В скрипте была прописана, помимо всего прочего, обработка событий на открытие и закрытие этого роллаута (есть несколько важных строк кода, которые мне нужно делать в эти моменты). Но так как скрипт мой разросся, то все инструменты уже не влазили по высоте в этот роллаут. В ширину я его увеличить не могу, потому как мешаться будет. И вот я решил переформатировать его под RolloutFloater с полосой прокрутки и в котором мои группы инструментов разбиты на отдельные схлопывающиеся роллауты. Переделал. Теперь я открываю его командой NewRolloutFloater. И всё бы хорошо, но столкнулся теперь с тем, что не могу никак заставить скрипт, а точнее базовый RolloutFloater отрабатывать события его открытия и соответственно закрытия Долго копался в хэлпе, но так и не нашёл ничего, что позволило бы мне решить эту проблему. Поэтому я здесь. Допускаю, что либо у RolloutFloater-а попросту нет обработки этих событий, либо я что-то недопонимаю, или ошибаюсь в синтаксисе. Друзья, пожалуйста, помогите разобраться! Я уже всю голову себе сломал ... PS: если обработки этих событий нет у RolloutFloater-а, то быть может есть какой-то обходной способ узнать что он сейчас будет, например, закрываться и перед этим моментом подсунуть ему код? Мне бы ещё помог вариант с интерфейсом в виде двух закладок, где на первой закладке основные инструменты, а на второй все остальные. Есть в макс-скрипте такой вариант, осуществляемый с помощью Active-Х. Но у меня этот вариант не работает. С DotNet не разбирался, т.к. боюсь утонуть в этом ужасе хотя и уверен, что с помощью него можно. Обидно, что такая пустяковая проблема, которая привела в какой-то тупик ... Помогите !!! |
|
|
16/01/2018, 11:26
Сообщение
#2
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
У флоатера нет событий для открытия/закрытия.
CODE ( nr = newRolloutFloater "title" 200 300 200 200 rollout X "one" ( button b "button" on x open do ( messageBox "We're open!\n" ) on x close do ( messageBox "We're closed!\n" ) ) rollout Y "two" ( spinner s "spinner" ) addRollout x nr addRollout y nr ) вот еще с табами пример CODE try (destroydialog X ) catch ()
rollout X "" width:333 height:300 ( local labels = #("vertex","edge","face","polygon","element") dotNetControl tabs "system.windows.forms.tabControl" width:(x.width-30) height:25 subRollout xx height:250 fn addSubRoll index = ( for x in xx.rollouts do removeSubRollout xx x case index of ( default: () 0: ( rollout vertRollout "" ( label _ "vertex" ) AddSubRollout xx vertRollout ) 1: ( rollout edgeRollout "" ( label _ "edge" ) AddSubRollout xx edgeRollout ) 2: ( rollout faceRollout "" ( label _ "face" ) AddSubRollout xx faceRollout ) 3: ( rollout polyRollout "" ( label _ "polygon" ) AddSubRollout xx polyRollout ) 4: ( rollout elemRollout "" ( label _ "element" ) AddSubRollout xx elemRollout ) ) ) on x open do ( tabs.tabPages.clear() tabs.BackColor = tabs.BackColor.lightblue tabs.itemSize = dotnetObject "System.Drawing.Size" ((tabs.width/labels.count)-2) 25 for x in labels do tabs.tabPages.add x addSubRoll 0 ) on tabs SelectedIndexChanged ev do ( addSubRoll tabs.SelectedIndex ) ) createDialog X pos:[100,100] |
|
|
16/01/2018, 15:35
Сообщение
#3
|
|
MaxMan Группа: Пользователи Сообщений: 170 Регистрация: 17/06/2002 Из: Москвы Пользователь №: 19 |
Jahman, спасибо тебе огромное!!!
По первому варианту я, признаться, уже додумался сам минут через 15 после написания этой темы. Единственное, что этот вариант не очень "красивый" с точки зрения логики кода, т.к. мы вешаем обработку закрытия флоатера на один из вложенных в него роллаутов, а не на него самого. Но раз у флоатера нет своей обработки событий, то это вполне себе хороший и рабочий вариант решения проблемы. Второй вариант с DotNet очень симпотный, но я всё-же сделаю по варианту 1, т.к. патологически пугаюсь DotNet-а Уж слишком он замудрёный для понимания, на мой взгляд. Jahman, ещё раз спасибо тебе огромное за помощь и за уделённое время!!! Тему можно считать закрытой. |
|
|
16/01/2018, 15:39
Сообщение
#4
|
|
уже всё сделал Группа: Пользователи Сообщений: 2 456 Регистрация: 01/06/2005 Из: z3л3№гр@d Пользователь №: 13 838 |
всегда пажалста
|
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 24/04/2024 - 00:32 |