|
|
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
Необходимо ловить моменты: открытие MDI-страницы, закрытие MDI-страницы, переключение между MDI-страницами. Нужно именно только для MDI-страниц. В ПБ есть события pbm_mdi ... , но они не срабатывают. Может есть какой-нибудь другой способ перехватывать эти события. Если кто делал подобное - поделитесь плз. - очень нада ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 14:27 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
самое простое, при условии что все mdi-sheets имеют общего предка, поставить в соответствующих событиях этого предка нотификацию родительского окна о необходимом событии (open, close, activate, whatever...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 14:34 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
Ну допустим, Open и Close - поймать не проблема. Проблема с переключениями между mdi-sheets. Мне нужно ловить только переключение между mdi-sheets. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 14:52 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
Activate PowerScript event ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 14:59 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
2 VanoR Activate PowerScript event может не подойти, ибо оно стработает, например, после MessageBox(...), а мне в этом случае не надо ничего делать. Вот, интересно - а когда срабатывают эти: WM_MDIACTIVATE pbm_mdiactivate WM_MDICASCADE pbm_mdicascade WM_MDICREATE pbm_mdicreate WM_MDIDESTROY pbm_mdidestroy WM_MDIGETACTIVE pbm_mdigetactive WM_MDIICONARRANGE pbm_mdiiconarrange WM_MDIMAXIMIZE pbm_mdimaximize WM_MDINEXT pbm_mdinext WM_MDIRESTORE pbm_mdirestore WM_MDISETMENU pbm_mdisetmenu WM_MDITILE pbm_mditile ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:09 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
PaulJBВот, интересно - а когда срабатывают эти: WM_MDIACTIVATE pbm_mdiactivate WM_MDICASCADE pbm_mdicascade WM_MDICREATE pbm_mdicreate WM_MDIDESTROY pbm_mdidestroy WM_MDIGETACTIVE pbm_mdigetactive WM_MDIICONARRANGE pbm_mdiiconarrange WM_MDIMAXIMIZE pbm_mdimaximize WM_MDINEXT pbm_mdinext WM_MDIRESTORE pbm_mdirestore WM_MDISETMENU pbm_mdisetmenu WM_MDITILE pbm_mditile Сделать соответствующий event со своим MessageBox(...) и посмотреть, когда он сработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:12 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
PaulJB 2 VanoR Activate PowerScript event может не подойти, ибо оно стработает, например, после MessageBox(...), а мне в этом случае не надо ничего делать. а что значит "ибо оно стработает, например, после MessageBox(...)" ?! Activate PowerScript event сработает в том окне, в котором Вы его пропишете. У Вас же нет своего окна на функцию MessageBox ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:15 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
2 VanoR >>Сделать соответствующий event со своим MessageBox(...) и посмотреть, когда он сработает Ну когда стработает event ьщжно посмотреть и в отладчике ... >>а что значит "ибо оно стработает, например, после MessageBox(...)"?! Например: юзер работает в окне sheet1, в процессе прога выдает ему сообщение MessageBox(...) При этом у sheet1 сработает deactivate. Юзер почитал сообщение и закрыл MessageBox, фокус вернулся в sheet1 (сработало activate), а вот этот случай как раз-то мне и не нужен. Мне нужно только когда юзер перекючается между шитами и все. Activate/deactivate в процесе работы мне не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:24 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
PaulJB >>а что значит "ибо оно стработает, например, после MessageBox(...)"?! Например: юзер работает в окне sheet1, в процессе прога выдает ему сообщение MessageBox(...) При этом у sheet1 сработает deactivate. Юзер почитал сообщение и закрыл MessageBox, фокус вернулся в sheet1 (сработало activate), а вот этот случай как раз-то мне и не нужен. Мне нужно только когда юзер перекючается между шитами и все. Activate/deactivate в процесе работы мне не надо. А что сложного например сделать глобальную переменную, в которой будет хранится Handle последнего текущего окна (в Deactivate присваивать ей значение), а в Activate учитывать эту переменную... и выполнять скрипт дальше в сучае ее изменения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:38 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
Ok. Опишу - зачем мне это надо. Я хочу мнеять туллбар у главного окна. Туллбар свой, не встроенный, но я хочу сделать его поведение таким как у стандарных ПБшных туллбаров. У каждого шита свой. И когда активируется шит, то он отображает свой туллбар. Менюха меняется автоматом. Нужно ловить момент переключения шита: юзер выбрал мышОй, серез менюху Windows или переключились по комбинации клавиш ... - и менять туллбар. Может есть другое решение такой проблемы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 15:59 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
конечно есть в меню для мди-шита указываете свой тулбар ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 16:51 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
ЗЫ: все указанные MDI события для управления MDI-окнами, а не для отлавливания событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 16:58 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
>> в меню для мди-шита указываете свой тулбар Как можно указать в меню свой туллбар? Если тот, что описывается в меню-паинтере - это не то. Я писал - использую свой (... вернее пользовательский - дабы не нарушать авторских прав :)), написанный отдельно туллбар. Его я привязываю к меню шита и теперь при переключении между шитами их надо отображать - один прятать (шит деактивируется), другой показывать (шит активируется). Если использовать события activate/deactivate тогда, например, при появлении MessageBox(...) сработает событие deactivate и туллбар исчезнет, а это не допустимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 17:04 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
я имел ввиду пользовать стандартный тулбар ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 17:04 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
Если бы стандартный, то я бы сдесь не задавал вопросов ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 17:12 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
зачем тебе этот геморой? ты какие-то свои контролы используешь? // попробуй событие WM_CHILDACTIVATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 17:13 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
PaulJB>> в меню для мди-шита указываете свой тулбар Как можно указать в меню свой туллбар? Если тот, что описывается в меню-паинтере - это не то. Я писал - использую свой (... вернее пользовательский - дабы не нарушать авторских прав :)), написанный отдельно туллбар. Его я привязываю к меню шита и теперь при переключении между шитами их надо отображать - один прятать (шит деактивируется), другой показывать (шит активируется). Если использовать события activate/deactivate тогда, например, при появлении MessageBox(...) сработает событие deactivate и туллбар исчезнет, а это не допустимо . получается в deactivate тулбар убивается, а в Activate появляется. Пусть у вас тулбар и убивается и появляется только в ACTIVATE. а deactivate использовать только для того, чтоб запомнить какое окно деактивировалось. анализируем в activate "Я другое окно?! (после MessageBox(...) например)" 1. да, другое... выполняем дальш скрипт, где убиваем и рожаем тулбар 2. нет... return ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 17:29 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
Да не, activate должно подойти, просто учитывать что вызвало деактивате ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 18:17 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
VanoR, спасибо за идею - пока работает. ... но тема событий: WM_MDIACTIVATE pbm_mdiactivate WM_MDICASCADE pbm_mdicascade WM_MDICREATE pbm_mdicreate WM_MDIDESTROY pbm_mdidestroy WM_MDIGETACTIVE pbm_mdigetactive WM_MDIICONARRANGE pbm_mdiiconarrange WM_MDIMAXIMIZE pbm_mdimaximize WM_MDINEXT pbm_mdinext WM_MDIRESTORE pbm_mdirestore WM_MDISETMENU pbm_mdisetmenu WM_MDITILE pbm_mditile пока не раскрыта ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 18:38 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
PaulJBVanoR, спасибо за идею - пока работает. ... но тема событий: WM_MDIACTIVATE pbm_mdiactivate WM_MDICASCADE pbm_mdicascade WM_MDICREATE pbm_mdicreate WM_MDIDESTROY pbm_mdidestroy WM_MDIGETACTIVE pbm_mdigetactive WM_MDIICONARRANGE pbm_mdiiconarrange WM_MDIMAXIMIZE pbm_mdimaximize WM_MDINEXT pbm_mdinext WM_MDIRESTORE pbm_mdirestore WM_MDISETMENU pbm_mdisetmenu WM_MDITILE pbm_mditile пока не раскрыта ... :) ну так попробуйте, а потом раскажете :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 18:52 |
|
||
|
Спец.события для MDIFrame
|
|||
|---|---|---|---|
|
#18+
to PaulJB: раскрыта - не раскрыта. что за гадание на кофейной гуще... берем хелп: http://msdn2.microsoft.com/en-us/library/ms644911(VS.85).aspx там написано: Remarks As the client window processes this message, it sends WM_MDIACTIVATE to the child window being deactivated and to the child window being activated . из вышесказанного: событие создаете в своих шитах! создал простейшее приложение - все работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2008, 19:58 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=35198286&tid=1336740]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 184ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...