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

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

Добавлено: 14 Июнь 2019, 10:36
kreator
Надо написать маленькую главку в "Энциклопедию Костылей".
С11.0.13401. Есть броуз. Нужно по нажатию левой клавиши мыши сделать некие действия, далее программа должна работать как обычно. Проблема вот в чём. Событие NewSelection на броузе срабатывает при отпускании клавиши мыши. Ставлю на списке "Алерт". В "Преалерт" делаю свои действия и отправляю cycle'ом далее. Но селект на запись броуза срабатывает не всегда. То срабатывает, то не срабатывает. Что подправить? Куда костыль подставить?

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

Добавлено: 14 Июнь 2019, 19:44
gopstop2007
если костыль, то BRWx.UpdateViewRecord и после своих действий - BRWx.ResetFromBuffer )

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

Добавлено: 15 Июнь 2019, 10:35
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

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

Добавлено: 15 Июнь 2019, 11:13
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

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

Добавлено: 16 Июнь 2019, 14:30
kreator
Я, конечно, попробую завтра на работе. Но что-то сомневаюсь. Событие NewSelection не срабатывает, до класса, думаю, тем более не дойдёт. Повторю - нужно отловить не клик, а именно нажатие. Пользователь нажал левую клавишу мыши и её не отпускает.

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

Добавлено: 16 Июнь 2019, 14:35
Дед Пахом
надо просто обработать сообщение WM_LBUTTONDOWN.

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

Добавлено: 16 Июнь 2019, 15:13
kreator
В "Энциклопедии костылей" нет места для WinAPI. :D