Как узнать?

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Как узнать?

Сообщение dsabitov »

Всем доброго времени суток.
С наступившим НГ!

Clarion10
Вопрос такой - как узнать - находится ли в данный момент мышка над активной строкой в LISTBOX, скажем именно над полем kind?
Вложения
screen.jpg
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как узнать?

Сообщение kreator »

Думаю, никак. Пока не нажмёшь, не определишь. Единственный контрол, который определяет, что мышка над ним, - это регион. Но его использование в броузе - большой вопрос. Что нужно конкретно? Выпадающая подсказка?
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Как узнать?

Сообщение Shur »

kreator писал(а): Что нужно конкретно?
Согласен с креатором, нужно бы узнать конечный замысел.
Пока могу предложить следующий финт: если создать контрол(ы) типа region, равный(е) по размеру строке(полям) listbox'а, и двигать его(их) каждый раз вслед за выделенной строкой, то при наведении на такую строку (а равно и на регион), у региона отработает нужное вам событие.
Если же действительно нужна всплывающая инфа, то можно обойтись свойством PROP:Tooltip
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как узнать?

Сообщение kreator »

Немного оффтопик. Кларионовский лист беден и убог, по жизни. Но понимает, на самом деле, где мы находимся. Отлавливает же, собака, мышку. Только нам это "отлавливание" не доступно. А жаль...
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Как узнать?

Сообщение gopstop2007 »

так над строкой или столбцом? :)
kreator писал(а):Думаю, никак. Пока не нажмёшь, не определишь. Единственный контрол, который определяет, что мышка над ним, - это регион. Но его использование в броузе - большой вопрос. Что нужно конкретно? Выпадающая подсказка?
тогда как tip определяет без нажатия :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Как узнать?

Сообщение Admin »

gopstop2007 писал(а): тогда как tip определяет без нажатия
Как уже кто то писал, просто мы не просим SV внедрить новый функционал ListBox.
А сами они не фантазеры добавлять функционал который везде уже есть, притом давно.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Как узнать?

Сообщение dsabitov »

Доброго дня!

Да - моя задача реализовать что-то вроде ToolTip, содержание которого генерировалось бы программно. Причем ToolTip должен появляться свой для каждого поля при наведении мыши на подсвеченную строку.
Вчера (в файле property.clw) я нашел некоторые свойства PROPLIST, которые почти то что нужно, если бы не требовали предварительного нажатия мышкой на сам контрол LIST, вот (предположительно) они:
PROPLIST:MouseDownRow EQUATE (7C20H) ! integer
PROPLIST:MouseMoveRow EQUATE (7C21H) ! integer
PROPLIST:MouseUpRow EQUATE (7C22H) ! integer
PROPLIST:MouseDownField EQUATE (7C23H) ! integer
PROPLIST:MouseMoveField EQUATE (7C24H) ! integer
PROPLIST:MouseUpField EQUATE (7C25H) ! integer
PROPLIST:MouseDownZone EQUATE (7C26H) ! integer
PROPLIST:MouseMoveZone EQUATE (7C27H) ! integer
PROPLIST:MouseUpZone EQUATE (7C28H) ! integer

Свойство PROPLIST:MouseUpField я проверил - выдает номер колонки над которой находится мышка (если нажать мышкой на сам контрол).
Действую я следующим образом - по EVET:Timer я отслеживаю двигалась или нет мышка в течении (скажем) 1 секунды. Если нет - то мне остается только узнать - находится ли мышь над активной строкой и над каким именно полем....
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Как узнать?

Сообщение dsabitov »

Ух ты!
Решено.
Свойства PROPLIST:MouseMoveRow и PROPLIST:MouseMoveField "живые"! Буду рад, если кому то пригодится в будущем...

Код: Выделить всё

                IF ?LQ{PROPLIST:MouseMoveRow}=CHOICE(?LQ) AND ?LQ{PROPLIST:MouseMoveField}=4 THEN
                    MESSAGE('Over 4-th field hilighted!')
                END
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Как узнать?

Сообщение Игорь Столяров »

dsabitov писал(а): находится ли мышь над активной строкой и над каким именно полем....
Гипотетически можно попробовать по таймеру генерить щелчок мышки и устанавливать флаг фиктивного нажатия.
По Prop:PreAlertKey, при включенном флаге фиктивного нажатия, анализировать свойства PropList,
отсекать стандартное действие ?List по нажатию кнопки мышки и сбрасывать флаг фиктивного нажатия
(иначе не будет обрабатываться обычный щелчок мышкой).
В теории должно работать, но надо пробовать. ;)
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как узнать?

Сообщение kreator »

dsabitov писал(а):Да - моя задача реализовать что-то вроде ToolTip, содержание которого генерировалось бы программно. Причем ToolTip должен появляться свой для каждого поля при наведении мыши на подсвеченную строку.
Я бы не стал сейчас сильно заморачиваться, потому что tooltip'ы работают. И для каждой ячейки они свои. И их можно создать в момент создания очереди листа. Надо просто подумать - что нужно выдавать. Лист ведь не слишком динамичная структура (обычная очередь). И ещё. Использование свойств PROPLIST:MouseMoveRow и PROPLIST:MouseMoveField в данном контексте как-то не очень.
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Как узнать?

Сообщение Shur »

dsabitov писал(а): Свойства PROPLIST:MouseMoveRow и PROPLIST:MouseMoveField "живые"! Буду рад, если кому то пригодится в будущем...

Код: Выделить всё

           IF ?LQ{PROPLIST:MouseMoveRow}=CHOICE(?LQ) AND ?LQ{PROPLIST:MouseMoveField}=4 THEN                    
               MESSAGE('Over 4-th field hilighted!')
           END
В приведённом примере есть один недостаток -- кто будет каждый раз жать на кнопку OK, чтобы закрыть MESSAGE().
Если выводимая в качестве tooltip'а информация статична, пользуйтесь стандартным tooltip инструментарием. А вот если вы изменили запись и тут же хотите её в тултипе, то, возможно, приведённый код более приемлем, только надо открывать своё собственное окошко и потом его по таймеру закрывать.
Последний раз редактировалось Shur 05 Январь 2016, 13:29, всего редактировалось 1 раз.
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Как узнать?

Сообщение dsabitov »

То, что я хотел - получилось сделать. ToolTip - это хорошо, но у меня получился больший функционал (понимаю, что все это ребячество, возникшее из-за свободного времени на праздниках :D ).
Итак, если я навожу указатель мыши на активную строчку, именно на столбец kind, то при наличии записей, для которых текущая является ссылкой, вываливается мой волшебный псевдо ToolTip в виде таблички. Экранчик в приложенном файле.
Вдруг кому-то такое нужно - пишите, расскажу. Всем спасибо за живое участие!
screen1.jpg
Последний раз редактировалось dsabitov 06 Январь 2016, 10:31, всего редактировалось 1 раз.
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Как узнать?

Сообщение Shur »

Да, вижу, получилось неплохо, и без MESSAGE(), а со своим окном с листбоксом.
Только вы это... ладно банки, Бог с ними -- они и без нас обанкротятся, но номер своего паспорта хотя бы не светите нам :)
Последний раз редактировалось Shur 05 Январь 2016, 13:43, всего редактировалось 2 раза.
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как узнать?

Сообщение kreator »

Навожу указатель мыши - это означает нажимаю?
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Как узнать?

Сообщение Admin »

Shur писал(а): но номер своего паспорта хотя бы не светите нам
А ниже это логин и пароль? :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить