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

Откуда: Оттуда )
Сообщений: 1207
Снова привет!
Как можно избежать при заполнении грида перескока с последнего поля на первое?
Т.е. заполняю таблицу в строку, нахожусь на последнем поле, ввожу данные, и происходит прыжок на первое поле той же строки. А хочу так чтобы этого прыжка не было.
21 янв 09, 11:17    [6714236]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
прошелмимо
Member [заблокирован]

Откуда: Из Курска понаехал
Сообщений: 10363
поищите поиском
слово nodefault
и способы переопределения метода Keypress у базовых классов фокспро

если не найдете, то я покажу пример
21 янв 09, 12:10    [6714758]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
прошелмимо
Member [заблокирован]

Откуда: Из Курска понаехал
Сообщений: 10363
+ set confirm
21 янв 09, 12:11    [6714768]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
прошелмимо
Member [заблокирован]

Откуда: Из Курска понаехал
Сообщений: 10363
+ посмотрите пример
https://www.sql.ru/forum/actualthread.aspx?tid=316202&hl=keypress
21 янв 09, 12:16    [6714807]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1207
прошелмимо
+ посмотрите пример
https://www.sql.ru/forum/actualthread.aspx?tid=316202&hl=keypress

посмотрел пример, но вопрос был немного не в том, мне хочется сделать так чтоб небыло прыжка на первое поле, т.е. чтобы курсор оставался в том же самом поле
21 янв 09, 12:41    [6715010]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
foxuser
Member

Откуда:
Сообщений: 6
Попробую что-то сказать, хотя новичок в VFP
Попробуйте в классе грида добавить Propeties nRow,nColumn, в которые будете записивать текущее состояние ячейки
в AfterRowColChange
if this.activerow=this.nrow this.ActiveColumn =1
if this.nColumn>0 and this.ActiveColumn =1
this.Columns[this.nColumn].Setfocus
endif
else
this.nRow=this.Activerow
this.nColumn=this.ActiveColumn
endif
Поэкспериментируйте с этим (в коде могут быть описки, поскольку не имею под рукою примера).
Должно позыционировать на ячейке и при Refresh, SetFocus
21 янв 09, 13:21    [6715426]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
BRROE
Member

Откуда:
Сообщений: 17
Попробуйте сделать вот это:

1. Сделать настройку
Set confirm on

2. Изменить BeforeRowColChange Вашего грида

*---------------------------------
PROCEDURE BeforeRowColChange
LPARAMETERS nColIndex
If nColIndex = this.ColumnCount .AND. Inlist(This.RowColChange,2,3) .AND. Inlist(LASTKEY(),13)
Nodefault
ENDIF
EndPRoc
*---------------------------------

P.S. В условии Inlist(LASTKEY(),13) можно добавить еще коды клавиш при которых не будет перехода
Например если нужно прибить и {TAB}, то Inlist(LASTKEY(),13,9)
22 янв 09, 13:28    [6721106]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
BRROE
Member

Откуда:
Сообщений: 17
Доработка.

Если в колонках стандартно Text1, то можно еще так.

*------------------------------------------------
PROCEDURE BeforeRowColChange
LPARAMETERS nColIndex
If nColIndex = this.ColumnCount .AND. Inlist(This.RowColChange,2,3) .AND. Inlist(LASTKEY(),13)
Nodefault
If !EOF() .AND. !EMPTY(This.Columns(this.ActiveColumn).Text1.Value)
Skip
EndIF

ENDIF
EndPRoc
*------------------------------------------------

А то получается что при нажатии ЕНТЕР после ввода значения нету перехода НИКУДА.
А так как стандартно на 1-ю Вас не устраивает, то лучше двинутся вниз.
22 янв 09, 14:18    [6721475]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1207
мне в последнем столбце лучше и остаться, без перемещений
22 янв 09, 15:21    [6722030]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
BRROE
Member

Откуда:
Сообщений: 17
Смею предположить что в последнем поле находится
ЧекБокс для последующего удаления записей
22 янв 09, 15:35    [6722166]     Ответить | Цитировать Сообщить модератору
 Re: Как избежать при заполнении грида перескока с последнего поля на первое?  [new]
Imperous
Member

Откуда: Оттуда )
Сообщений: 1207
BRROE
Смею предположить что в последнем поле находится
ЧекБокс для последующего удаления записей

нет, чекбокс в другой серии ;)
22 янв 09, 19:36    [6723693]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить