|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Требуется сделать контекстную справку по окнам, менюшкам, полям датавинды, кнопкам, тулбару и т.п. Очень импонирует вариант, как в программе NeroBurning, когда в меню Помощь выбираешь пункт "Что это?" (или Shift + F1) и указатель мышинного курсора менятеся на знак вопроса. После чего можно ткнуть в любой объект (включая пункты меню и подменю!) и появляется выпадающая контекстная справка aka tooltip по данному объекту. В PowerBuilder'е, похоже, штатными средствами подобное можно сделать только для Response - окна. Может кто сталкивался, есть ли общий вариант реализации контекстной справки для всего приложения (не только response-окон) ? Pb 9.02 7610 (без PFC) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2005, 21:02 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Вообще-то не полагается это делать на немодальных диалогах... Но вот так :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2005, 21:34 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
без PFC Добавляем кнопку на titlebar Код: plaintext 1. 2. 3.
Код: plaintext 1.
Код: plaintext 1. 2. 3. 4. 5.
ловим событие pbm_syscommand: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2005, 21:53 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Я так понимаю, что это пример контекстной справки для окна с windowtype = response. Тем не менее интересные моменты в примере есть... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2005, 21:56 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
В особенности тот факт, что он с моей помощью правильно на datawindows работает :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2005, 21:58 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
ЗоринАндрей Код: plaintext 1.
Код: plaintext 1.
УЖОСНАХ!!! (с) ты А если у окна уже есть кнопка контекстной помощи? Что произойдет с твоим окном? Дизьюнкция и арифметическое сложение это все же разные вещи. Хотя и могут работать одинаково, если одно из слогаемых нулевое :) И во вторых, объявлять константу и не использовать ее??? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2005, 01:48 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Предыдущий мой пост относился к ответу Филиппа. Не получается через вышеупомянутую функцию SetWindowLongA добавить кнопку со знаком вопроса в titlebar у не response - окон (просто ничего не происходит). У response прокатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2005, 12:21 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
bumsyПредыдущий мой пост относился к ответу Филиппа. Не получается через вышеупомянутую функцию SetWindowLongA добавить кнопку со знаком вопроса в titlebar у не response - окон (просто ничего не происходит). У response прокатывает. На самом деле на Popup window тоже работает, если убрать галки с Minbox и MaxBox, а галку на ControlMenu и TitleBar оставить. Как я с самого начала и сказал ФилиппВообще-то не полагается это делать на немодальных диалогах. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2005, 19:10 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Понятно, Филипп. Спасибо за отзыв. В общем, пока задача такая: надо реализовать контекстную справку на пункты меню в приложении. То есть пользователь выбрав пункт меню, может нажать shift + F1 и по данному пункту меню открывается справка. Может кто делал подобное? Такое ощущение, что в PB не хватает событий для меню. Нельзя в приложении получить текущий выбранный пункт меню, не иначе как не прописав в каждый пункт меню в событие selected скрипт.. Еще вопрос. В menu pointer для самого верхнего элемента меню можно прописать скрипт, например на события selected, clicked и т.п. И этот скрипт я так понимаю никогда не будет выполнен в приложении, зачем в него можно писать скрипт? Это просто для общности с другими пунктами меню, или все-таки когда-то сработает? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2005, 16:15 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
bumsyЕще вопрос. В menu pointer для самого верхнего элемента меню можно прописать скрипт, например на события selected, clicked и т.п. И этот скрипт я так понимаю никогда не будет выполнен в приложении, зачем в него можно писать скрипт? Это просто для общности с другими пунктами меню, или все-таки когда-то сработает? :-) Допустим, когда в тулбаре иконка есть на этот пункт меню. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2005, 17:01 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Локшин МаркДопустим, когда в тулбаре иконка есть на этот пункт меню. Я имею в виду самый верхний уровень в меню. Его имя совпадает с названием самого меню. В Menu Painter'е у него нету вкладки Toolbar в свойствах, да и во вкладке General пусто. А вот события есть и в них даже можно писать. Хотя эти события можно самому вызвать из скрипта, может для этого... Но зачем же тогда нужны предопределенные события clicked, selected. Снова непонятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2005, 17:24 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
bumsyПонятно, Филипп. Спасибо за отзыв. В общем, пока задача такая: надо реализовать контекстную справку на пункты меню в приложении. То есть пользователь выбрав пункт меню, может нажать shift + F1 и по данному пункту меню открывается справка. Может кто делал подобное? На мой взгляд задача несколько абсурдная. В нормальном меню текст пункта меню и есть контекстная справка. В приложениях где вы видите подобные извращения, используются НЕ меню, а специальные окна, эмулирующие меню. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2005, 20:18 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
ФилиппНа мой взгляд задача несколько абсурдная. В нормальном меню текст пункта меню и есть контекстная справка. В приложениях где вы видите подобные извращения, используются НЕ меню, а специальные окна, эмулирующие меню. а вот посмотрим в описание события WM_HELP: msdnWM_HELP Indicates that the user pressed the F1 key. If a menu is active when F1 is pressed, WM_HELP is sent to the window associated with the menu; otherwise, WM_HELP is sent to the window that has the keyboard focus. If no window has the keyboard focus, WM_HELP is sent to the currently active window. Код: plaintext 1.
lphi Address of a HELPINFO structure that contains information about the menu item, control, dialog box, or window for which Help is requested. поэтому задам всем наводящий вопрос: кто-нибудь пробовал перехватывать (с целью перехвата и обработки сообщения WM_HELP) оконную функцию у главного окна приложения, написанного на pb9? сдаётся, что оно на псевдокоде выглядит так: Код: plaintext 1. 2.
кстати, ковырялись тут на rsnd.ru и отыскали упоминание 4-го powerbuilder'а в исходниках MessageBox()! достаточно в файле user32.dll поискать в формате юникод (например, в far'е) строку pb040. ( here ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2005, 13:12 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
savosin_sergey поэтому задам всем наводящий вопрос: кто-нибудь пробовал перехватывать (с целью перехвата и обработки сообщения WM_HELP) оконную функцию у главного окна приложения, написанного на pb9? сдаётся, что оно на псевдокоде выглядит так: Код: plaintext 1. 2.
Простите а зачем этим заниматься, если у главного (да и любого) окна приложения есть event help (mapped to pbm_help , который и есть WM_HELP )? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2005, 20:19 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
ФилиппНа мой взгляд задача несколько абсурдная. В нормальном меню текст пункта меню и есть контекстная справка. В приложениях где вы видите подобные извращения, используются НЕ меню, а специальные окна, эмулирующие меню. Отображение справки по пункту меню требует начальство. :-). Спец.окно для меню это, наверное, действительно хорошая штука (когда оно есть в арсенале и приложение только начинает создаваться). Однако у пункта меню есть событие Help, которое срабатывает когда выделен пункт меню и нажали F1 (или shift+F1, или ctrl+F1). Правда придется в каждый пункт меню прописывать код в событие help, что-то типа f_open_help(this.classname()). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2005, 21:23 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Филипп, вы немного опередили :) Только событие wm_help все-таки для кажлого пункта меню надо прописывать. WM_help который у окна - он не распространяется на меню. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2005, 21:25 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
А как сделать пункт меню у window_MDI типа контекстной справки ('?'), чтобы этот "вопросик" предвинуть к нужному элементу окна(win_sheet), кликнуть и получить справку о нем? РВ10.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 02:46 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
У нас ВСЕ объекты унаследованы от userobjectов. В событии dragdrop проверяем DraggedObject. В зависимости от результата что-то делаем. В менюшке нажимаем на "Что это?" - курсор превращается в знак вопроса. Тыкаем в какой-нибудь объект - выскакивает пояснение. Каждый юзер может сам добавлять/менять комментарии (в меню "Добавить объяснение"). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 10:54 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Riska , У меня вопрос: как сделать переход в состояние "Что это?" при нажатии на пункт меню окна или пользовательскую кнопку в окне, чтобы появился курсор ввиде (?) и т.д. Окно не response, но добавить хочется именно такой сервис, а не через открытие контекстного меню элемента окна. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 13:18 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
На окне MDI лежит невидимое dw_help (его-то мы и будем перетаскивать). Скрипт в меню: Код: plaintext 1. 2.
На каждом объекте в событии gragdrop написать: Код: plaintext
Это в общих чертах. Остальное - по усмотрению (нужно определить, в какую именно "кнопку" тыкнули). Можно в tag что-то написать. Можно что-то типа такого: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 15:44 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
Riska , Спасибо. Очень интересное решение. Есть правда один минус - трудно однозначно понять где в данный момент реально курсор и как следствие не всегда попадаешь на элемент окна, и естественно "Справки" нет и создается впечатление, что для данного элемента её нет. Может есть все-таки вариант через функцию API (например) вызвать этот сервис, чтобы он работал через обычное событие (help)? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 22:47 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
AIS, Все очень красиво работает. Вот пример: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2009, 10:32 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
RiskaAIS, Все очень красиво работает. Вот пример: Код: plaintext
А не кто и не спорит. Действительно всё работает и красиво. Но , повторюсь, что если надо например подвести "вопросик" к елементу меню, т.е. элементу с малыми размерами, то можно и промахнуться. :) И все-таки: можно выдать какую-то системную команту, чтобы перейти в режим события Контекстной спарвки (т.е. чтобы был "курсор-вопросик" )? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2009, 10:26 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
А разве так не катит? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2009, 15:04 |
|
Контекстная помощь, как сделать?
|
|||
---|---|---|---|
#18+
maxATCА разве так не катит? Код: plaintext
Тоже об этом думал. Создал иконку у которой "вопросик со стрелкой" и эта стрелка указывает в центр иконки. Вроде всё ОК. Но все равно хочется стандартного решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2009, 23:45 |
|
|
start [/forum/topic.php?fid=15&fpage=30&tid=1336153]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 152ms |
0 / 0 |