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

Clarion, Clarion 7

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

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

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

Сообщение kreator » 14 Июнь 2019, 10:36

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

gopstop2007
✯ Ветеран ✯
Сообщения: 1261
Зарегистрирован: 25 Март 2009, 21:55

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

Сообщение gopstop2007 » 14 Июнь 2019, 19:44

если костыль, то BRWx.UpdateViewRecord и после своих действий - BRWx.ResetFromBuffer )
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
morkovin
Ветеран
Сообщения: 622
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 15 Июнь 2019, 10:35

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

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

!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
Ветеран
Сообщения: 622
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 15 Июнь 2019, 11:13

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
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 16 Июнь 2019, 14:30

Я, конечно, попробую завтра на работе. Но что-то сомневаюсь. Событие NewSelection не срабатывает, до класса, думаю, тем более не дойдёт. Повторю - нужно отловить не клик, а именно нажатие. Пользователь нажал левую клавишу мыши и её не отпускает.
We are hard at work… for you. :)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2284
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

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

Сообщение Дед Пахом » 16 Июнь 2019, 14:35

надо просто обработать сообщение WM_LBUTTONDOWN.
С уважением, ДП

kreator
✯ Ветеран ✯
Сообщения: 3356
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 16 Июнь 2019, 15:13

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

Ответить