Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Подкрашивание строк в grid при удержании клавиши shift  [new]
Katya_G
Member

Откуда:
Сообщений: 10
Зравствуйте!
Хотелось бы, чтобы пока удерживается клавиша shift при перемещении по строкам грида они подкрашивались (как в totalcommander например).

Прописываю в keypress формы :

LPARAMETERS nKeyCode, nShiftAltCtrl

IF this.ActiveControl.name="Grid1"

DO case
CASE nShiftAltCtrl=1.and.nKeyCode=56 &&код стрелки вверх
SKIP -1

this.ActiveControl.setall("dynamicbackcolor", ..., "column")
&& то же для стрелки вниз
ENDCASE

ENDIF

Работает плохо: отпускаешь shift - продолжает красить, и т.д.
Что не так?
Спасибо.
31 май 05, 09:15    [1583056]     Ответить | Цитировать Сообщить модератору
 Re: Подкрашивание строк в grid при удержании клавиши shift  [new]
Андрей К
Member

Откуда: Санкт-Петербург
Сообщений: 157
Katya_G
Зравствуйте!
Хотелось бы, чтобы пока удерживается клавиша shift при перемещении по строкам грида они подкрашивались (как в totalcommander например).

Прописываю в keypress формы :

LPARAMETERS nKeyCode, nShiftAltCtrl

IF this.ActiveControl.name="Grid1"

DO case
CASE nShiftAltCtrl=1.and.nKeyCode=56 &&код стрелки вверх
SKIP -1

this.ActiveControl.setall("dynamicbackcolor", ..., "column")
&& то же для стрелки вниз
ENDCASE

ENDIF

Наверное, нужно рассмотреть ещё один Case:
CASE nShiftAltCtrl=0 && Shift отпущен
где
this.ActiveControl.setall("dynamicbackcolor", ..., "column") - как-то отменить

Работает плохо: отпускаешь shift - продолжает красить, и т.д.
Что не так?
Спасибо.
автор
31 май 05, 11:56    [1583730]     Ответить | Цитировать Сообщить модератору
 Re: Подкрашивание строк в grid при удержании клавиши shift  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Katya_G

Прописываю в keypress формы :
...
Работает плохо: отпускаешь shift - продолжает красить, и т.д.
Что не так?

Если ты перекрываешь стандартный обработчик события KeyPress, то нужно подавить эту самую стандартную обработку. Для этого в твоем коде поставь команду

NODEFAULT

В тех местах, где ты пишешь собственную обработку.

В противном случае у тебя получается двойная работа: сначала ты сама даешь команду SKIP -1, а потом выполняется обработка по умолчанию, соответствующая клавишам Shift+"стрелка вверх"
31 май 05, 12:14    [1583828]     Ответить | Цитировать Сообщить модератору
 Re: Подкрашивание строк в grid при удержании клавиши shift  [new]
po2
Member

Откуда:
Сообщений: 121
Мне думается виновата начинка назначенная в DynamicBackColor, код приведенный для события KeyPress на вид безобиден, хотя его действительно лучше подправить, например:
lPar nKeyCode,;
     nShiftAltCtrl
  if ThisForm.ActiveControl.BaseClass=='Grid'
  do case
case nKeyCode = 56.and.; && up
     nShiftAltCtrl = 1
NoDe
keyb '{uparrow}' plai
case nKeyCode = 50.and.; && down
     nShiftAltCtrl = 1
NoDe
keyb '{dnarrow}' plai
endc 
endi   
Так не придется самому обрабатывать случай достижения начала или конца таблицы, когда лишний skip вызывает ошибку. Назначать всякий раз DynamicBackColor не нужно. Достаточно придумать способ хранения номеров отмеченных записей. Сказанное иллюстрируется простейшим примером из прицепа. Более сложные манипуляции с записями Grid'а можно посмотреть в Решениях на www.foxclub.ru. Точную ссылку дать не могу, т.к. FoxClub сейчас недоступен.

К сообщению приложен файл (Example.zip - 8Kb) cкачать
31 май 05, 19:20    [1585913]     Ответить | Цитировать Сообщить модератору
 Re: Подкрашивание строк в grid при удержании клавиши shift  [new]
Katya_G
Member

Откуда:
Сообщений: 10
Спасибо всем большое! Особенно за примерчик :)
1 июн 05, 13:25    [1587813]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить