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

Добавлено: 01 Июнь 2005, 0:33
Гость
Помогите, пожалуйста, решить следующий трабл!
Есть записи в стандартной таблице Browse ABC C55H. Есть кнопки, которые двигают эти записи вверх-вниз-в начало- в конец.
Надо навесить на эти кнопки горячие клавиши:
– вверх – Shift+Up
- вниз – Shift+Down
- в начало - Ctrl+Shift+Up
- в конец – Ctrl+Shift+Down
На окне списка прописываю соответствующие горящие клавиши (Alert…), а в точке вставки в секции AlertKey пишу что-то вроде:
Case KeyCode()
OF ShiftUp
Select(?MoveUp)
PressKey(EnterKey)
OF ….
……………..
End
Все работает, но….. чтобы еще раз отработать эту комбинацию клавиш, надо сначала отпустить и Shift и Up, и только после этого нажать их заново.
А нужно: удерживая (постоянно) Shift и нажимая периодически на Up, перемещать запись.
Помогите, знающие люди, очень уж сильно и срочно надо!!!
Написал: NewUser(217)

Добавлено: 01 Июнь 2005, 3:10
StillZero
предисловие: легко это не решается :) хотя в сабклассинге я особо трудного ничего не вижу

необходимо засабклассить лист бокс, в процедуре сабклассинга отлавливать события WM_KEYDOWN - нажатие кнопки, WM_KEYUP - отпустили кнопку

подробнее про сабклассинг можно узнать:
http://www.zero.clarionlife.net/Article ... lass.shtml
http://www.pisoft.ru/verstak/Insider/col_subclass.htm


Написал: PAA(27)

Добавлено: 01 Июнь 2005, 3:50
Гость
Спасибо за столь оперативный отклик! Буду стараться столь же оперативно разобраться с этим самым сабклассингом.
Написал: NewUser(217)

Добавлено: 01 Июнь 2005, 9:01
Дед Пахом
У кнопок есть атрибут "Repeat" на закладке экстра, его значение это как часто срабатывает на кнопке событие Event:Accepted, пока кнопка нажата и не отпущена. Может, с этим поиграться?
Написал: Дед Пахом(89)

Добавлено: 01 Июнь 2005, 13:02
Гость
В принципе (на сколько я понимаю этот самый принцип), для решения данной задачи надо отслеживать момент нажатия и момент отпускания кнопки Shift. При нажатии: loc:Shift = 1, при отпускании: loc:Shift = 0

Case KeyCode()
OF UpKey
IF loc:Shift = 1
Select(?MoveUp)
PressKey(EnterKey)
OF ….
……………..
End

Неужто в Кларионе для отслеживания нажатия и отпускания клавиш (не мышиных) нет никаких-никаких собственных средств? Регион, положенный на лист-бокс мне не поможет? Может что-нибудь из API? Или приговор – жесткий и безапелляционный – сабклассинг?
Написал: NewUser(217)

Добавлено: 01 Июнь 2005, 14:38
StillZero
KEYSTATE( )
Написал: PAA(27)