powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Спец.события для MDIFrame
21 сообщений из 21, страница 1 из 1
Спец.события для MDIFrame
    #35197936
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо ловить моменты: открытие MDI-страницы, закрытие MDI-страницы, переключение между MDI-страницами. Нужно именно только для MDI-страниц.
В ПБ есть события pbm_mdi ... , но они не срабатывают.
Может есть какой-нибудь другой способ перехватывать эти события.
Если кто делал подобное - поделитесь плз. - очень нада ...
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35197977
самое простое, при условии что все mdi-sheets имеют общего предка,
поставить в соответствующих событиях этого предка нотификацию родительского окна о необходимом событии (open, close, activate, whatever...).
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198052
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну допустим, Open и Close - поймать не проблема.
Проблема с переключениями между mdi-sheets.
Мне нужно ловить только переключение между mdi-sheets.
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198086
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Activate PowerScript event
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198134
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198149
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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(...) и посмотреть, когда он сработает
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198164
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB 2 VanoR
Activate PowerScript event может не подойти, ибо оно стработает, например, после MessageBox(...), а мне в этом случае не надо ничего делать.

а что значит "ибо оно стработает, например, после MessageBox(...)" ?!
Activate PowerScript event сработает в том окне, в котором Вы его пропишете. У Вас же нет своего окна на функцию MessageBox
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198218
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 VanoR

>>Сделать соответствующий event со своим MessageBox(...) и посмотреть, когда он сработает
Ну когда стработает event ьщжно посмотреть и в отладчике ...

>>а что значит "ибо оно стработает, например, после MessageBox(...)"?!
Например: юзер работает в окне sheet1, в процессе прога выдает ему сообщение MessageBox(...)
При этом у sheet1 сработает deactivate.
Юзер почитал сообщение и закрыл MessageBox, фокус вернулся в sheet1 (сработало activate), а вот этот случай как раз-то мне и не нужен.

Мне нужно только когда юзер перекючается между шитами и все. Activate/deactivate в процесе работы мне не надо.
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198286
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB
>>а что значит "ибо оно стработает, например, после MessageBox(...)"?!
Например: юзер работает в окне sheet1, в процессе прога выдает ему сообщение MessageBox(...)
При этом у sheet1 сработает deactivate.
Юзер почитал сообщение и закрыл MessageBox, фокус вернулся в sheet1 (сработало activate), а вот этот случай как раз-то мне и не нужен.

Мне нужно только когда юзер перекючается между шитами и все. Activate/deactivate в процесе работы мне не надо.
А что сложного например сделать глобальную переменную, в которой будет хранится Handle последнего текущего окна (в Deactivate присваивать ей значение), а в Activate учитывать эту переменную... и выполнять скрипт дальше в сучае ее изменения.
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198381
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ok. Опишу - зачем мне это надо.
Я хочу мнеять туллбар у главного окна.
Туллбар свой, не встроенный, но я хочу сделать его поведение таким как у стандарных ПБшных туллбаров. У каждого шита свой. И когда активируется шит, то он отображает свой туллбар.
Менюха меняется автоматом.
Нужно ловить момент переключения шита: юзер выбрал мышОй, серез менюху Windows или переключились по комбинации клавиш ... - и менять туллбар.

Может есть другое решение такой проблемы ?
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198578
конечно есть

в меню для мди-шита указываете свой тулбар
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198605
ЗЫ: все указанные MDI события для управления MDI-окнами,
а не для отлавливания событий.
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198632
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> в меню для мди-шита указываете свой тулбар

Как можно указать в меню свой туллбар?
Если тот, что описывается в меню-паинтере - это не то.

Я писал - использую свой (... вернее пользовательский - дабы не нарушать авторских прав :)), написанный отдельно туллбар. Его я привязываю к меню шита и теперь при переключении между шитами их надо отображать - один прятать (шит деактивируется), другой показывать (шит активируется). Если использовать события activate/deactivate тогда, например, при появлении MessageBox(...) сработает событие deactivate и туллбар исчезнет, а это не допустимо.
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198637
я имел ввиду пользовать стандартный тулбар
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198670
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы стандартный, то я бы сдесь не задавал вопросов ... :)
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198675
зачем тебе этот геморой? ты какие-то свои контролы используешь?

// попробуй событие WM_CHILDACTIVATE
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198744
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB>> в меню для мди-шита указываете свой тулбар

Как можно указать в меню свой туллбар?
Если тот, что описывается в меню-паинтере - это не то.

Я писал - использую свой (... вернее пользовательский - дабы не нарушать авторских прав :)), написанный отдельно туллбар. Его я привязываю к меню шита и теперь при переключении между шитами их надо отображать - один прятать (шит деактивируется), другой показывать (шит активируется). Если использовать события activate/deactivate тогда, например, при появлении MessageBox(...) сработает событие deactivate и туллбар исчезнет, а это не допустимо .
получается в deactivate тулбар убивается, а в Activate появляется.

Пусть у вас тулбар и убивается и появляется только в ACTIVATE.
а deactivate использовать только для того, чтоб запомнить какое окно деактивировалось.
анализируем в activate "Я другое окно?! (после MessageBox(...) например)"
1. да, другое... выполняем дальш скрипт, где убиваем и рожаем тулбар
2. нет... return
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198882
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не, activate должно подойти, просто учитывать что вызвало деактивате
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198947
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

пока не раскрыта ... :)
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35198976
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

пока не раскрыта ... :)
ну так попробуйте, а потом раскажете :)
...
Рейтинг: 0 / 0
Спец.события для MDIFrame
    #35199058
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 .
из вышесказанного: событие создаете в своих шитах!

создал простейшее приложение - все работает!
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Спец.события для MDIFrame
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]