Поймать MouseLeft на списке.

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Поймать MouseLeft на списке.

Сообщение kreator »

Надо написать маленькую главку в "Энциклопедию Костылей".
С11.0.13401. Есть броуз. Нужно по нажатию левой клавиши мыши сделать некие действия, далее программа должна работать как обычно. Проблема вот в чём. Событие NewSelection на броузе срабатывает при отпускании клавиши мыши. Ставлю на списке "Алерт". В "Преалерт" делаю свои действия и отправляю cycle'ом далее. Но селект на запись броуза срабатывает не всегда. То срабатывает, то не срабатывает. Что подправить? Куда костыль подставить?
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Поймать MouseLeft на списке.

Сообщение gopstop2007 »

если костыль, то BRWx.UpdateViewRecord и после своих действий - BRWx.ResetFromBuffer )
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Поймать MouseLeft на списке.

Сообщение morkovin »

Попробуй так:

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

!Browse Embed: TakeNewSelection (2600)
IF SELF.ILC.GetControl(){PROPLIST:MouseDownRow} <> 0 AND SELF.ILC.GetControl(){PROPLIST:MouseDownZone}=LISTZONE:Field
  SELF.UpdateBuffer
  xQueueFieldNo# = SELF.ILC.GetControl(){PROPLIST:FieldNo,SELF.ILC.GetControl(){PROPLIST:MouseDownField}}
    xField"        = UPPER(CLIP(WHO(Queue:Browse,xQueueFieldNo#)))
    MESSAGE(xField",'test')
END
WBR, morkovin
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Поймать MouseLeft на списке.

Сообщение morkovin »

kreator писал(а): 14 Июнь 2019, 10:36по нажатию левой клавиши мыши

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

!Browse Embed: TakeNewSelection (2600)
IF SELF.ILC.GetControl(){PROPLIST:MouseDownField} <> 0 AND SELF.ILC.GetControl(){PROPLIST:MouseDownZone}=LISTZONE:Field
  SELF.UpdateBuffer
  xQueueFieldNo# = SELF.ILC.GetControl(){PROPLIST:FieldNo,SELF.ILC.GetControl(){PROPLIST:MouseDownField}}
    xField"        = UPPER(CLIP(WHO(Queue:Browse,xQueueFieldNo#)))
    IF KeyCode() = MouseLeft  !alert MouseLeft
        MESSAGE(xField",'test')
    END
 END
WBR, morkovin
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Поймать MouseLeft на списке.

Сообщение kreator »

Я, конечно, попробую завтра на работе. Но что-то сомневаюсь. Событие NewSelection не срабатывает, до класса, думаю, тем более не дойдёт. Повторю - нужно отловить не клик, а именно нажатие. Пользователь нажал левую клавишу мыши и её не отпускает.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Поймать MouseLeft на списке.

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

надо просто обработать сообщение WM_LBUTTONDOWN.
С уважением, ДП
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Поймать MouseLeft на списке.

Сообщение kreator »

В "Энциклопедии костылей" нет места для WinAPI. :D
We are hard at work… for you. :)
Ответить