Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отставание события DataGrid_Click() / 5 сообщений из 5, страница 1 из 1
11.09.2006, 17:57
    #33978966
if_r_it
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отставание события DataGrid_Click()
Здравствуйте.

По клику на Gride значение текущего поля должно присваиваться полю Text объекта Text1.
Однако на практике значение присваивается Text1.Text лишь при повторном клике на DataGrid1, т.е. при повторном возникновении события DataGrid1_Click.
Получается, что данные, отображаемые на Text1.Text, "отстают" ровно на один мышиный клик.
Из дебаггера видно, что после завершения DataGrid1_Click() данные в поле Text не изменяются на актуальные.


Код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub DataGrid1_Click()
If Not IsNull(rs.Fields.Item(i).Value) Then
Text1.Text = CStr(rs.Fields.Item(i).Value)
Else
Text1.Text = ""
End If
End Sub

Вероятно, я где-то ступил, но самостоятельно увидеть свою ошибку не способен, ибо глаз уже "замылилися".



Спасибо за внимание.
...
Рейтинг: 0 / 0
11.09.2006, 18:20
    #33979033
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отставание события DataGrid_Click()
А что такое у вас i и где оно меняется?
Попробуйте повесить эту обработку на событие EnterCell.
...
Рейтинг: 0 / 0
12.09.2006, 10:30
    #33979927
if_r_it
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отставание события DataGrid_Click()
MelkiadesА что такое у вас i и где оно меняется?
Попробуйте повесить эту обработку на событие EnterCell.

К сожалению у DataGrid нет события EnterCell(но пробовал использовать и другие события), у MsFlexGrid есть, да... но не у DataGrid. Пожалуй, стоит попробовать MsFlexGrid.

А i изначально установлено в 0. В любом случае экспериментально выяснено, что при других начальных значениях всё остаётся также.
i ещё изменяется посредством ScrollBar-a.
Самое интересное то, что при изменении значений i с помощью события
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub HScroll1_Change()
i = HScroll1.Value
If Not IsNull(rs.Fields.Item(i).Value) Then
Text1.Text = CStr(rs.Fields.Item(i).Value)
Else
Text1.Text = ""
End If
End Sub
,
значение Text1.text устанавлиается именно с текущей строки, выделенной на DataGrid(а не с педыдущей выделенной строки, как в случае с DataGrid_Click). Т.е. актуальные данные можно получить посредством передвижения "ползунка". Почему одно событие срабатывает так как нужно, а другое - несколько иначе, мне совершенно неясно.
...
Рейтинг: 0 / 0
19.09.2006, 11:15
    #33996023
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отставание события DataGrid_Click()
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
MsgBox DataGrid1.Text
End Sub
...
Рейтинг: 0 / 0
19.09.2006, 16:17
    #33997295
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отставание события DataGrid_Click()
Private mblnClicked As Boolean

Private Sub DataGrid1_Click()
mblnClicked = True
End Sub

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
On Error Resume Next

If mblnClicked Then
Text1.Text = DataGrid1.Text
mblnClicked = Not mblnClicked
End If
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Отставание события DataGrid_Click() / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]