Grid - переход на следующую ячейку после окончания ввода
На страницу Пред. 1, 2
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Янв 15, 2015 09:13   |
|
Полезность: Нет оценки
|
Volod пишет: | Попробуйте этот код
Код: | Public Sub Grid1_ValidateEdit (Row, Col, Cancel)
Grid1.Col = Col + 1
End Sub |
|
Попробовал - НЕ работает.
т.е. после редактирования переход на другую ячейку НЕ происходит. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Янв 15, 2015 09:29   |
|
Полезность: Нет оценки
|
После редактирования и нажатия Enter? |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Янв 15, 2015 10:53   |
|
Полезность: Нет оценки
|
Volod пишет: | После редактирования и нажатия Enter? |
ДА!
Damir пишет: | Volod пишет: |
Как Sub Grid1_ValidateEdit() не работает?
Msgbox col & Grid1.Col что пишет?
Т.е. в MAIN Grid1.Col = 1 осталось? |
По-порядку...
1) есть грид на форме - GridServices
2) Пытаюсь сделать переход на другую ячейку в гриде - после редактирования значения. Для этого навешиваю процедурку в VB-скрипте:
Код: |
Public Sub GridServices_ValidateEdit(row, col, cancel)
if row + 1 < GridServices.Rows then
MsgBox("(1) row = " & row & " col = " & col & " GridServices.Row = " & GridServices.Row & " GridServices.col = " & GridServices.col )
GridServices.Row = 1
GridServices.Col = 1
MsgBox("(2) row = " & row & " col = " & col & " GridServices.Row = " & GridServices.Row & " GridServices.col = " & GridServices.col )
end if
End Sub
|
3) рядом с гридом лежит кнопка 'Button7' - для тестирования
4) реакция на нажатие 'Button7' - прямой вызов GridServices_ValidateEdit()
Код: |
Public Function Main(LastControl)
If LastControl Is Button7 Then
call GridServices_ValidateEdit(1, 1, false)
end if
....
|
Запускаем операцию в навигаторе....
1) Нажатие на тестовую кнопку...
Видим MsgBox 2 штуки
(1) row = 1 col = 1 GridServices.Row = 2 GridServices.col = 5
(2) row = 1 col = 1 GridServices.Row = 1 GridServices.col = 1
2) Пытаемся редактировать ячейку грида...
Видим MsgBox 2 штуки
(1) row = 2 col = 5 GridServices.Row = 2 GridServices.col = 5
(2) row = 2 col = 5 GridServices.Row = 2 GridServices.col = 5
Вывод: нифига не работает |
Поясняю:
в первом случае текущая ячейка изменилась (GridServices.Row = 1 GridServices.col = 1)
во втором случае - нет (GridServices.Row = 2 GridServices.col = 5) |
|
 |
Alkov Профи
Вступление в Клуб: 23.09.2010
|
Чт Янв 15, 2015 11:25   |
|
Полезность: Нет оценки
|
Может на OnKeyDown повесить переход ? |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Янв 15, 2015 12:14   |
|
Полезность: Нет оценки
|
Цфт.... вместо того чтоб ввести новое событие 'при позиционировании на ячейку грида' - что-нить вроде _BeforePosChange(...)
- стали использовать почему-то событие _BeforeEdit()
Т.е. в кучу свалили 2 разных события и теперь событие _BeforeEdit() вызывается ....
- когда ему положено, т.е. в момент перехода ячейки в состояние редактирования
- когда ему НЕ положено, т.е. в момент позиционирования на новую ячейку (в режим редактирования ячейка при этом НЕ переходит) |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|