Почему все строки выбираются в MSFlexGrid при выборе последней строки? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть элемент управления MSFlexGrid с 2 столбцами, и все мои данные отображаются в этой сетке.Когда я нажимаю кнопку «Добавить», я добавляю новую строку и выбираю новую строку.

Проблема в том, что все строки выделены, и мне нужно выбрать только новую строку.

Вот мой код:

Private Sub Add_Click()
    FGrid.Rows = FGrid.Rows + 1
    FGrid.RowSel = FGrid.Rows - 1
    FGrid.ColSel = 0

    If FGrid.Rows > 1 Then ' > 10
        FGrid.TopRow = FGrid.Rows - 1
    Else
        FGrid.TopRow = 1 
    End If

    FGrid.TextMatrix(FGrid.RowSel, 0) = Format(Date, "DD/MM/YYYY")
    FGrid.SetFocus
End Sub  

1 Ответ

0 голосов
/ 13 сентября 2018

Похоже, вы ищете свойство Row вместо RowSel. Вы можете использовать комбинацию из двух, хотя в зависимости от ваших требований .

Row Свойство:

Возвращает / устанавливаетактивная ячейка в FlexGrid.

RowSel свойство:

Определяет начальную или конечную строку или столбец для диапазона ячеек.

Когда вы устанавливаете значение RowSel, оно считается окончанием выбора, поскольку значение Row по-прежнему равно 0 (без изменений) .Следовательно, вам нужно использовать что-то вроде этого:

FGrid.Row = FGrid.Rows - 1
'FGrid.RowSel = FGrid.Rows - 1   ' Optional.

Еще одна вещь, вместо увеличения .Rows и последующего использования TextMatrix() для присвоения значения ячейке, вы можете использовать AddItem длядобавить строку со значением в ее первой ячейке.В этом случае ваш код будет выглядеть примерно так:

FGrid.AddItem Format(Date, "dd/MM/yyyy")

FGrid.Row = FGrid.Rows - 1
'FGrid.RowSel = FGrid.Rows - 1   ' Optional.
FGrid.ColSel = 0

If FGrid.Rows > 10 Then
    FGrid.TopRow = FGrid.Rows - 1
End If

FGrid.SetFocus
...