CftClub.ru
Клуб специалистов ЦФТ-Банк

Grid - переход на следующую ячейку после окончания ввода
На страницу Пред.  1, 2
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
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?


ДА! Exclamation

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() вызывается ....
- когда ему положено, т.е. в момент перехода ячейки в состояние редактирования
- когда ему НЕ положено, т.е. в момент позиционирования на новую ячейку (в режим редактирования ячейка при этом НЕ переходит)
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru