Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Дек 04, 2014 07:17  Grid - переход на следующую ячейку после окончания ввода |
|
Полезность: Нет оценки
|
Добрый день.
Задача: заменить таблицу из контролов Edit на Grid.
Проблема:
Стандартный цфт-грид ведет себя не так, как табличка из контролов.
Например, после окончания ввода значения в ячейку хотелось бы, чтобы по ENTER фокус перескакивал на следующую редактируемую ячейку.
Реализуемо? |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Дек 04, 2014 10:05   |
|
Полезность: Нет оценки
|
Grid1.SetFocus() наверное поможет |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Дек 04, 2014 12:15   |
|
Полезность: Нет оценки
|
Volod пишет: | Grid1.SetFocus() наверное поможет |
а как на конкретную строчку-столбец передать фокус? |
|
 |
Alex294 Участник со стажем
Вступление в Клуб: 02.06.2013
|
Чт Дек 04, 2014 12:43   |
|
Полезность: Нет оценки
|
Damir пишет: | Volod пишет: | Grid1.SetFocus() наверное поможет |
а как на конкретную строчку-столбец передать фокус? |
Grid1.Row = 4
Grid1.Col = 2 |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Дек 04, 2014 12:48   |
|
Полезность: Нет оценки
|
Public Sub Grid1_ValidateEdit (Row, Col, Cancel)
'Grid1.Row = Row + 1
'Grid1.Col = Col + 1
End Sub |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Янв 14, 2015 14:30   |
|
Полезность: Нет оценки
|
Volod пишет: | Public Sub Grid1_ValidateEdit (Row, Col, Cancel)
'Grid1.Row = Row + 1
'Grid1.Col = Col + 1
End Sub |
только сейчас дошли руки до этой задачки...
Volod, не работает так!
т.е. вб-скрипт выполняется без ошибок,
Grid1_ValidateEdit() вызывается - всякие MsgBox() отрабатывают из нее...
а курсор НЕ переходит на указанную ячейку - хоть тресни. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Янв 14, 2015 14:41   |
|
Полезность: Нет оценки
|
У меня работает.
Проверка Сервер-Клиент.
Навигатор 6.0.111.22. |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Янв 14, 2015 14:45   |
|
Полезность: Нет оценки
|
Volod пишет: |
Public Sub Grid1_ValidateEdit (Row, Col, Cancel)
Grid1.Row = 1
End Sub |
Это работает отдельно (в Майн), а в Sub Grid1_ValidateEdit() не работает.
Подозреваю, что после вызова Grid1_ValidateEdit() позиция курсора восстанавливается.
Т.е. курсор успевает сбегать 'куда послали' и вернуться на редактируемую ячейку. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Янв 14, 2015 14:48   |
|
Полезность: Нет оценки
|
В моем примере было
Grid1.Col = Col + 1 |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Янв 14, 2015 14:49   |
|
Полезность: Нет оценки
|
Volod пишет: | У меня работает.
Проверка Сервер-Клиент.
Навигатор 6.0.111.22. |
Шайтан-ма!
Проверка Сервер-Клиент. - обе штуки.
Навигатор Версия 6.0.115.60
Версия ТЯ 7.1.2.2
Версия Рабочего места Оператора 6.11.12.0 |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Ср Янв 14, 2015 15:10   |
|
Полезность: Нет оценки
|
Volod пишет: | В моем примере было
Grid1.Col = Col + 1 |
а я уж всяко пробовал....
Grid1.Col = Col + 1
Grid1.Col = 1 |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Янв 14, 2015 15:33   |
|
Полезность: Нет оценки
|
Damir пишет: | Это работает отдельно (в Майн), а в Sub Grid1_ValidateEdit() не работает.
Подозреваю, что после вызова Grid1_ValidateEdit() позиция курсора восстанавливается.
Т.е. курсор успевает сбегать 'куда послали' и вернуться на редактируемую ячейку. |
Как Sub Grid1_ValidateEdit() не работает?
Msgbox col & Grid1.Col что пишет?
Т.е. в MAIN Grid1.Col = 1 осталось? |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Янв 15, 2015 08:30   |
|
Полезность: Нет оценки
|
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
Вывод: нифига не работает |
|
 |
Damir Участник - экстремал
Вступление в Клуб: 29.03.2013
|
Чт Янв 15, 2015 08:40   |
|
Полезность: Нет оценки
|
Народ из ЦФТ....
Ну посмотрите - уже есть тестовый пример с указанием 2 версий навигаторов.
У меня не работает, у Volod - говорит, работает на его версии навигатора.
Damir пишет: |
Запускаем операцию в навигаторе....
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
Вывод: нифига не работает |
|
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Янв 15, 2015 08:58   |
|
Полезность: Нет оценки
|
Попробуйте этот код
Код: | Public Sub Grid1_ValidateEdit (Row, Col, Cancel)
Grid1.Col = Col + 1
End Sub |
|
|
 |
|