Позиционирование по правому щелчку мышки в ListBox’е

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Позиционирование по правому щелчку мышки в ListBox’е

Сообщение NewUser »

Есть стандартный ListBox (не Browse) по очереди.
Есть руками писанный PopUp.
Все работает, все вызывается (по правой кнопке мышки), но…..
В отличии от стандартного Browse’а, если щелкнуть правой кнопкой мышки по невыделенной записи, то появляется окно PopUp меню касательно ВЫДЕЛЕННОЙ записи.
Вопрос:
Как выделить запись, по которой совершен щелчок правой кнопкой мышки?
Вроде бы простой вопрос, но что-то не получается его реализовать.
С55Н, АВС.
Заранее благодарен.
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

На LisxBox'е висит Alert MouseRight
В AlertKey - идет обработка:
IF KEYCODE() = MouseRight
PopupString=PopupMgr.Ask()
Cycle
END
Она-то и перехватывает "позиционирование" на нужную запись. Здесь, я полагаю, надо ручками отловить координаты щелчка мышки, а как спозиционироваться - тут нет проблем.
Что-то не получается узнать, по какой записи (позиции в ЛистБоксе) был произведен щелчок правой кнопкой мыши... :(
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Нужно отлавливать MouseRightUp а не MouseRight и все будет хорошо.
Я себе для этих целей написал шаблон который и сую во все дырки :)

MouseRightUp можно прописать только ручками. В стандартном выборе кнопок его нет.
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

Спасибо, Admin, все гениальное – как всегда – просто!
Можно и домой идти!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Сообщение Дед Пахом »

На LisxBox'е висит Alert MouseRight
В AlertKey - идет обработка:
IF KEYCODE() = MouseRight
PopupString=PopupMgr.Ask()
Cycle
END
Нужно отлавливать MouseRightUp а не MouseRight и все будет хорошо.
Можно ещё на Event:PreAlertKey поставить
IF KEYCODE()=MouseRight THEN CYCLE END
тогда броуз сначала спозиционируется на щелчке, а потом уже отработает Popup()
С уважением, ДП
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

Спасибо, Дед Пахом! Ушел ценный совет в копилку "как сделать так...."
gudkov
Бывалый
Сообщения: 67
Зарегистрирован: 03 Август 2005, 14:03
Откуда: Иркутск

Сообщение gudkov »

Вставил код: IF KEYCODE()=MouseRight THEN CYCLE., как и было написано, запись подсвечиваеться, но селект на нее происходит только после второго щелчка. C6.2ШВС
Удачи!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Сообщение Дед Пахом »

Да? Не знаю, я ABC юзаю, там работает. Видимо, в ШВС и ABC разные по своей сути циклы, в которых этот CYCLE.
С уважением, ДП
Ответить