:: Архив конференции по VFP до 2005 года
Смена активной колонки
Glyba
Автор

Сообщений: 386
Откуда: Собинка
Дата регистрации: 23.09.2004
Вот грид. А в нем колонки.
В одной из колонок установлено DynamicCurrentControl, CurrenControlами работают попеременно несколько контейнеров с одним или двумя текстбоксами (так надо!). Все замечательно, но по стрелке вверх/вниз происходит не переход на строку вверх/вниз, а на колонку влево/вправо. Пытался в KeyPress-ах текстбоксов прописывать ActivateCell(.ActiveRow+-1, .ActiveColumn), но это работает только до какого-то момента, после чего .ActiveRow зануляется и переход не происходит. Как побороть?
Ratings: 0 negative/0 positive
Re: Смена активной колонки
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
настоятельно не советую пользовать ActiveRow, т.к. при больших таблицах получаешь огромные тормоза

NoDefault Прописан в KeyPress?
ActiveRow зануляется при потере гридом фокуса (включая Debuger)
Ratings: 0 negative/0 positive
Re: Смена активной колонки
Glyba
Автор

Сообщений: 386
Откуда: Собинка
Дата регистрации: 23.09.2004
2Penner: я в курсе про тормоза ActiveRow, поискал по форуму, прежде чем задавать вопрос. Таблица у меня всего 20-30 записей (по числу полей в другой таблице), так что с этим все в порядке. Nodefault, разумеется, был прописан, и грид фокус не терял, разве что он иногда в своих целях сам это иногда делает - .ActiveRow зануляется при подходе к нижней границе грида, когда вот-вот прокрутка понадобится.
Ratings: 0 negative/0 positive
Re: Смена активной колонки
Glyba
Автор

Сообщений: 386
Откуда: Собинка
Дата регистрации: 23.09.2004
Таки поборол. Просто перехожу на нужную запись в таблице и делаю Grid.Refresh. Нужно еще lockscreen=.t. перед и lockscreen=.f. после, а то движок на скроллбаре прыгает.
Ratings: 0 negative/0 positive
Re: Смена активной колонки
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Glyba!

Ну а банальным SKIP +-1 не проще будет? Только учти что тогда видимо не
сработает LostFocus/Valid - т.е. наверное лучше ЯВНО фокус с этого
контейнера (а соответственно и со всего грида) вынуть (поместив на
безобидный "малозаметный текстбокс" например), ну а потом обратно вернуть.
P.S. IMHO если сделать меню с навигацией, и там сделать хоткеи на например
Ctrl+стрелки, то будет даже круче - по "просто стрелкам" внутри контейнера
бегаем, по Ctrl+стрелки - между строками...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Смена активной колонки
AlexK

Сообщений: 2114
Откуда: Королев,Москва
Дата регистрации: 11.12.2000
forum.foxclub.ru




------------------
Береги природу, мать Вашу. Моя страничка www.genrep.net
Ratings: 0 negative/0 positive
Re: Смена активной колонки
Glyba
Автор

Сообщений: 386
Откуда: Собинка
Дата регистрации: 23.09.2004
Я под "перехожу на нужную запись" и имел в виду как раз skip+-1: вот код BeforeRowColChange:

LPARAMETERS nColIndex
with THIS
if nColIndex=2 and !mdow() and inli(last(),5,24)
nodefault
THISFORM.LockScreen=.t.
skip sign(last()-6)
do case
case bof()
go top
case eof()
skip -1
endc
.Refresh
THISFORM.LockScreen=.f.
endi
endW
а Valid/LostFocus меня в данном случае не интересовали.




------------------
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика