:: Visual Foxpro, Foxpro for DOS
Запрет цикличного перехода в гриде
Yuri2

Сообщений: 135
Откуда: Барнаул
Дата регистрации: 17.11.2005
Добрый день!
Подскажите пожалуйста как запретить переход после ввода данных в последнем столбце грида на первый.
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Попробуйте в LostFocus контрола колонки, направить фокус куда вам надо.


------------------
Ratings: 0 negative/1 positive
Re: Запрет цикличного перехода в гриде
Yuri2

Сообщений: 135
Откуда: Барнаул
Дата регистрации: 17.11.2005
Придумал решение (переводит на следующую строку) - поместить в BeforeRowColChange грида

LPARAMETERS nColIndex
IF nColIndex=THIS.COLUMNCOUNT
IF BETWEEN(LASTKEY(),48,57) OR INLIST(LASTKEY(),9,13) && для числового типа поля
NODEFAULT
KEYBOARD "{CTRL+A}"
IF !EOF()
SKIP
ENDIF
ENDIF
ENDIF
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Если добавить
IF !EOF()
SKIP
this.column1.setfocus()
ENDIF
будет вставать на 1ю колонку
Не понял что такое BETWEEN(LASTKEY(),48,57)


------------------
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
BETWEEN(LASTKEY(),48,57) - это нажатие цифр. Но вот зачем? Не понятно.
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
Yuri2

Сообщений: 135
Откуда: Барнаул
Дата регистрации: 17.11.2005
По поводу
BETWEEN(LASTKEY(),48,57)

В последнюю колонку грида вносится десятичное число с 2 знаками после запятой. После ввода фокус переходит следующую колонку, но так как её нет-то на первую колонку. Приходится гнать курсор обратно в конец грида и спускаться на следующую строку - что не удобно.



Исправлено 1 раз(а). Последнее : Yuri2, 27.06.17 13:15
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
То есть, установлено SET CONFIRM OFF ?
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
Yuri2

Сообщений: 135
Откуда: Барнаул
Дата регистрации: 17.11.2005
Да, по умолчанию.



Исправлено 1 раз(а). Последнее : Yuri2, 28.06.17 04:27
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Yuri2
Приходится гнать курсор обратно в конец грида

Если курсор может встать с последнего поля на первое, то что ему мешает с первого сразу встать на последнее?
Или нажатие одной кнопки - это и есть "гнать курсор"?
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
Yuri2

Сообщений: 135
Откуда: Барнаул
Дата регистрации: 17.11.2005
akvvohinc
Yuri2
Приходится гнать курсор обратно в конец грида


Если курсор может встать с последнего поля на первое, то что ему мешает с первого сразу встать на последнее?
Или нажатие одной кнопки - это и есть "гнать курсор"?

Если люди вносят быстро цифры, эти пусть и очень небольшие и простые движения в виде возврата курсора на нужную ячейку - раздражают и тормозят работу. :al:
Ratings: 0 negative/0 positive
Re: Запрет цикличного перехода в гриде
Аспид
Автор

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Yuri2
По поводу
BETWEEN(LASTKEY(),48,57)

В последнюю колонку грида вносится десятичное число с 2 знаками после запятой. После ввода фокус переходит следующую колонку, но так как её нет-то на первую колонку. Приходится гнать курсор обратно в конец грида и спускаться на следующую строку - что не удобно.
Как то не сходится.
Я почему предложил сразу LostFocus()
Вам не надо думать, почему теряется фокус.

Как бы сделал я.
Создал метод, который выполнял бы
IF !EOF()
SKIP
this.column1.setfocus()
ENDIF
Возможно с параметром, на какую колонку, и от куда.
И вызывал бы его из LostFocus()

Все это не обязательно прописывать в самом LostFocus(), а можно просто биндить.
Тогда конечно без параметров.
Конкретно твое решается просто.
Если расширить метод, и вызывать его с разных колонок (Например с 1й на строку вверх, на последнюю)
надо выяснять откуда был вызов AEVENTS( )


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


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

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

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