Страница 1 из 2

Как узнать?

Добавлено: 04 Январь 2016, 20:17
dsabitov
Всем доброго времени суток.
С наступившим НГ!

Clarion10
Вопрос такой - как узнать - находится ли в данный момент мышка над активной строкой в LISTBOX, скажем именно над полем kind?

Как узнать?

Добавлено: 04 Январь 2016, 20:52
kreator
Думаю, никак. Пока не нажмёшь, не определишь. Единственный контрол, который определяет, что мышка над ним, - это регион. Но его использование в броузе - большой вопрос. Что нужно конкретно? Выпадающая подсказка?

Как узнать?

Добавлено: 04 Январь 2016, 21:13
Shur
kreator писал(а): Что нужно конкретно?
Согласен с креатором, нужно бы узнать конечный замысел.
Пока могу предложить следующий финт: если создать контрол(ы) типа region, равный(е) по размеру строке(полям) listbox'а, и двигать его(их) каждый раз вслед за выделенной строкой, то при наведении на такую строку (а равно и на регион), у региона отработает нужное вам событие.
Если же действительно нужна всплывающая инфа, то можно обойтись свойством PROP:Tooltip

Как узнать?

Добавлено: 04 Январь 2016, 21:46
kreator
Немного оффтопик. Кларионовский лист беден и убог, по жизни. Но понимает, на самом деле, где мы находимся. Отлавливает же, собака, мышку. Только нам это "отлавливание" не доступно. А жаль...

Как узнать?

Добавлено: 04 Январь 2016, 22:04
gopstop2007
так над строкой или столбцом? :)
kreator писал(а):Думаю, никак. Пока не нажмёшь, не определишь. Единственный контрол, который определяет, что мышка над ним, - это регион. Но его использование в броузе - большой вопрос. Что нужно конкретно? Выпадающая подсказка?
тогда как tip определяет без нажатия :)

Как узнать?

Добавлено: 05 Январь 2016, 5:53
Admin
gopstop2007 писал(а): тогда как tip определяет без нажатия
Как уже кто то писал, просто мы не просим SV внедрить новый функционал ListBox.
А сами они не фантазеры добавлять функционал который везде уже есть, притом давно.

Как узнать?

Добавлено: 05 Январь 2016, 9:40
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 секунды. Если нет - то мне остается только узнать - находится ли мышь над активной строкой и над каким именно полем....

Как узнать?

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

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

                IF ?LQ{PROPLIST:MouseMoveRow}=CHOICE(?LQ) AND ?LQ{PROPLIST:MouseMoveField}=4 THEN
                    MESSAGE('Over 4-th field hilighted!')
                END

Как узнать?

Добавлено: 05 Январь 2016, 10:27
Игорь Столяров
dsabitov писал(а): находится ли мышь над активной строкой и над каким именно полем....
Гипотетически можно попробовать по таймеру генерить щелчок мышки и устанавливать флаг фиктивного нажатия.
По Prop:PreAlertKey, при включенном флаге фиктивного нажатия, анализировать свойства PropList,
отсекать стандартное действие ?List по нажатию кнопки мышки и сбрасывать флаг фиктивного нажатия
(иначе не будет обрабатываться обычный щелчок мышкой).
В теории должно работать, но надо пробовать. ;)

Как узнать?

Добавлено: 05 Январь 2016, 11:59
kreator
dsabitov писал(а):Да - моя задача реализовать что-то вроде ToolTip, содержание которого генерировалось бы программно. Причем ToolTip должен появляться свой для каждого поля при наведении мыши на подсвеченную строку.
Я бы не стал сейчас сильно заморачиваться, потому что tooltip'ы работают. И для каждой ячейки они свои. И их можно создать в момент создания очереди листа. Надо просто подумать - что нужно выдавать. Лист ведь не слишком динамичная структура (обычная очередь). И ещё. Использование свойств PROPLIST:MouseMoveRow и PROPLIST:MouseMoveField в данном контексте как-то не очень.

Как узнать?

Добавлено: 05 Январь 2016, 13:23
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 инструментарием. А вот если вы изменили запись и тут же хотите её в тултипе, то, возможно, приведённый код более приемлем, только надо открывать своё собственное окошко и потом его по таймеру закрывать.

Как узнать?

Добавлено: 05 Январь 2016, 13:25
dsabitov
То, что я хотел - получилось сделать. ToolTip - это хорошо, но у меня получился больший функционал (понимаю, что все это ребячество, возникшее из-за свободного времени на праздниках :D ).
Итак, если я навожу указатель мыши на активную строчку, именно на столбец kind, то при наличии записей, для которых текущая является ссылкой, вываливается мой волшебный псевдо ToolTip в виде таблички. Экранчик в приложенном файле.
Вдруг кому-то такое нужно - пишите, расскажу. Всем спасибо за живое участие!
screen1.jpg

Как узнать?

Добавлено: 05 Январь 2016, 13:35
Shur
Да, вижу, получилось неплохо, и без MESSAGE(), а со своим окном с листбоксом.
Только вы это... ладно банки, Бог с ними -- они и без нас обанкротятся, но номер своего паспорта хотя бы не светите нам :)

Как узнать?

Добавлено: 05 Январь 2016, 13:35
kreator
Навожу указатель мыши - это означает нажимаю?

Как узнать?

Добавлено: 05 Январь 2016, 14:51
Admin
Shur писал(а): но номер своего паспорта хотя бы не светите нам
А ниже это логин и пароль? :)