Forms: показать popup menu

0ri0n
Дата: 16.09.2004 13:45:17
Если ли способ отобразить popup menu программно?
Pavel Zenkevich
Дата: 16.09.2004 13:58:22
На Forms6 мы это делали, эмулируя правый клик мыши на элементе с помощью SendMessage из d2kwutil.dll. Подробнее не смогу - уже не работаю с формсом.
0ri0n
Дата: 16.09.2004 17:57:45
Если кому интересно, как вызвать меню по щелчку левой кнопки мыши по кнопке:

Создаем popup menu, привязываем его к кнопке. Создаем триггер When-Button-Pressed на эту кнопку:

declare
  w_id pls_integer;
begin
  -- получаем уникальный идентификатор кнопки (кнопка тоже является окном)
  w_id := GET_ITEM_PROPERTY(Find_Item('Имя_Блока.Имя_Кнопки'), WINDOW_HANDLE);
  -- имитируем нажатие павой кнопки мыши
  WIN_API_SHELL.SendMessage( w_id, 516 );  -- WM_RBUTTONDOWN
  WIN_API_SHELL.SendMessage( w_id, 517 );  -- WM_RBUTTONUP
end;

Pavel Zenkevich - спасибо!
Pavel Zenkevich
Дата: 16.09.2004 18:22:45
Не за что.
Еще одна идея:
Можно позиционировать меню в нужное место (например, приклеить под кнопкой - мы это делали именно так). Это управляется параметрами сообщения. Почитай про события WM_RBUTTONUP. Там можно как-то передать координаты возникновения события. уже точно не помню, но вроде там была заморочка с координатами относительно левого верхнего угла кнопки.
Успехов! :)
Вадим
Дата: 16.09.2004 19:03:59
кстати в Forms 9i тригер не нужен и так по щелчку правой кнопки мыши
работает
Ales Protiv
Дата: 17.09.2004 12:25:00
Вадим
кстати в Forms 9i тригер не нужен и так по щелчку правой кнопки мыши
работает


ясен перец по правой работает, ты по ЛЕВОЙ попробуй.

еще видел на OTN решение использовать канву вместо popup-menu
Пробовал -- кривовато выходит :(
dennis :)
Дата: 17.09.2004 12:57:46
примерно так (в общих чертах, приложенный скрипт работать не будет, но идя рабочая):
declare
target pls_integer;
begin
target := to_number(get_item_property(item_name,WINDOW_HANDLE));
Win_Api_Shell.SendMessage(l_target,517,2,<place>,TRUE);
end;

в качестве item_name передаем имя элемента, для которого надо поднять меню.
dennis :)
Дата: 17.09.2004 12:58:59
ни фига себе настрочили, пока я писал :)
michmur
Дата: 14.03.2008 06:01:09
Доброго времени суток! Скажите асуществует возможноть использовать WIN_API_SHELL в Forms6?
mymaster
Дата: 14.03.2008 09:26:57
существует