powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Popup-menu
19 сообщений из 19, страница 1 из 1
Popup-menu
    #32532151
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, подскажите, пожалуйста, как создать нормальное Popup-menu, чтоб оно выскакивало по правой кнопке в некотором DW? Или где можно что-0нибудь посмотреть по этому поводу?
...
Рейтинг: 0 / 0
Popup-menu
    #32532170
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, хелпы отменили? Или читать ломает?
PowerBuilder HELP PopMenu PowerScript function

Description
Displays a menu at the specified location.

Controls
Menu objects

Syntax
menuname . PopMenu ( xlocation, ylocation )

Argument Description
menuname The fully qualified name of a menu on a menu bar you want to display at the specified location
xlocation The distance in PowerBuilder units of the displayed menu from the left edge of the window
ylocation The distance in PowerBuilder units of the displayed menu from the top of the window

Return value
Integer. Returns 1 if it succeeds and -1 if an error occurs. If any argument's value is NULL, PopMenu returns NULL.

Usage
If the menu object is not associated with the window so that it was opened when the window was opened, you must use CREATE to allocated memory for the menu (see the last example).
If the Visible property of the menu is FALSE, you must make the menu visible before you can display it as a popup menu.
The coordinates you specify for PopMenu are relative to the active window. In an MDI application, the coordinates are relative to the frame window, which is the active window. To display a menu at the cursor position, call PointerX and PointerY for the active window (the frame window in an MDI application) to get the coordinates of the cursor. (See the examples.)

Calling PopMenu in an object script PopMenu must be called in an object script. It should not be called in a global function.
---
С уважением, IKAR
ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Popup-menu
    #32532729
raikary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IkarА что, хелпы отменили? Или читать ломает?

хелпы хорошие...

но только НЕТу у датавиндов координат мыши при нажатии правой клавишей..(может я ошибаюсь, но например у listwiew - точно нету...)
...
Рейтинг: 0 / 0
Popup-menu
    #32532897
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторможет я ошибаюсь
Ошибаетесь
...
Рейтинг: 0 / 0
Popup-menu
    #32533386
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raikaryно только НЕТу у датавиндов координат мыши при нажатии правой клавишей
Я всегда беру координаты с окна, а не с объекта... Может быть это и не правильно, но меня всегда спасаеть...
---
С уважением, IKAR
ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Popup-menu
    #32536945
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, менюшку создал. А как теперь из его пункта по-человечески обратиться к ДВ, откуда она выскакивает?
...
Рейтинг: 0 / 0
Popup-menu
    #32537082
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед вызовом Popup() помести в instance менюхи ссылку на DW
...
Рейтинг: 0 / 0
Popup-menu
    #32537093
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Levon:
А как теперь из его пункта по-человечески обратиться к ДВ, откуда она выскакивает?
ParentWindow. TriggerEvent ('function or event name')
---
С уважением, IKAR
ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Popup-menu
    #32537212
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо всем. Все круто!
...
Рейтинг: 0 / 0
Popup-menu
    #32545950
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вот на практике что-то все труднее оказалось. Создал я триггер в окне, из которого вызывается менюха, а потом в ней пишу
ParentWindow.TriggerEvent('function or event name')
Но возникает ошибка - ParentWindow возвращает тип Window, а родительское окно у меня имеет тип w_sheet_opl. Явно указывать имя окна не хочется. Как быть? А можно про ссылку на окно поподробней?
...
Рейтинг: 0 / 0
Popup-menu
    #32546666
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая ошибка?
...
Рейтинг: 0 / 0
Popup-menu
    #32546825
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо возникает ошибка - ParentWindow возвращает тип Window, а родительское окно у меня имеет тип w_sheet_opl. Явно указывать имя окна не хочется.
И не надо имя окна указывать. Почитайте в помощи повнимательней про события PowerBuilder. Вызывая TriggerEvent Вы фактически говорите PB - если событие с таким именем существует, то выполни его. Если не существует - ну и бог с ним. Никаких ошибок не возникает :)
...
Рейтинг: 0 / 0
Popup-menu
    #32547027
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну пишет же человек что возникает ошибка.
Значит добился-таки как-то, несмотря на то что не должно ея быть.
вот мне и любопытно - как?
...
Рейтинг: 0 / 0
Popup-menu
    #32547213
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ошибки нет как таковой, только не работает нифига. Пишу
ParentWindow().triggerevent("ue_filterwindow(is_criteria)")
При этом ParentWindow() возвращает совсем не то окно, откуда вызывалось попап-окно. Пишу w_sheet_opl.triggerevent("ue_filterwindow(is_criteria)")
(w_sheet_opl - имя вызывающего окна)Но при этом ничего не происходит. Ивент не вызывается. Пишу еще тупее

w_sheet_opl.dw_1.SetFilter(is_criteria)
w_sheet_opl.dw_1.Filter()
w_sheet_opl.wf_set_rowcounts ()
(То есть то, что в событии должно выполняться)Возникает ошибка Null object reference...и т.д Что я сделал не так?
...
Рейтинг: 0 / 0
Popup-menu
    #32547483
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LevonПри этом ParentWindow() возвращает совсем не то окно, откуда вызывалось попап-окно.
1. "попап-окно" - в смысле popup-menu?
2. Как именно вы установили, что это совсем не то окно?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
// скрипт в меню
window win
long ll_ParentWinHandle
win=parentWindow
if IsValid (win ) then ll_ParentWinHandle = handle(win)

// скрипт в окне
long ll_ThisWinHandle
ll_ThisWinHandle = handle(this)

Если ll_ThisWinHandle<>ll_ParentWinHandle, тогда это разные окна.

3. LevonПишу
ParentWindow().triggerevent("ue_filterwindow(is_criteria)")

Гм... Функция triggerevent ожидает в качестве параметра только имя события, никаких параметров.
Если Вам необходимо вызывать событие с параметрами, то воспользуйтесь таким синтаксисом:
win.Dynamic ue_filterwindow(is_criteria)
В этом случае предварительно стоит убедиться, что у вызывающего объекта существует такое событие (для интроспекции воспользуйтесь функциями ClassDefinition и ScriptDefinition, либо убедитесь, что класс объекта, из которого вызывается событие, тот, в котором это событие определено (функция classname())
...
Рейтинг: 0 / 0
Popup-menu
    #32548684
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть и попап-окно, и меню. Принцип, я так понимаю, один и тот же. Главное, что мне надо достучаться до вызывыающего окна. ParentWindow() возвращает действительно не то окно. Попробовал с динамик. Событие просто не вызывается.
...
Рейтинг: 0 / 0
Popup-menu
    #32548776
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи :
- код события clicked меню
- код вызываемого события
Причем не из головы, а именно то, что не работает.
Потому что нет такой, как ты пишешь, функции ParentWindow() в меню, а есть только свойство ParentWindow.
...
Рейтинг: 0 / 0
Popup-menu
    #32548893
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызов попап-окна (не меню!) по нажатию кнопки
w_find_gtd lw_sheet
Open(lw_sheet,"w_find_gtd",parent)
В вызваном окне:

ParentWindow().DYNAMIC f_filter(is_criteria)
или
ParentWindow().dynamic trigger event ue_filterwindow(is_criteria)
И функция, и событие в вызывающем окне присутствуют.
...
Рейтинг: 0 / 0
Popup-menu
    #32548938
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Levon :
Вот здесь то и ошибка (Ваша):
авторВ вызваном окне:
ParentWindow().DYNAMIC f_filter(is_criteria)
т.к. вызов ParentWindow().DYNAMIC f_filter(is_criteria) должен быть не в окне, а в меню! Именно меню с помощью ParentWindow() возвернет Вам окно, на котором его (меню) вызвали, и выполнит событие этого окна.
А в Вашем случае ParentWindow() возвращает Вам парент-окно для Вашего попап-окна, а не для меню! Т.е. возвращает оно MDI Frame, в котором Ваше событие отсутствует...
---
С уважением, IKAR
ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Popup-menu
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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