Сетка Flex не редактируемая колонка - PullRequest
0 голосов
/ 15 января 2012

Я не хочу редактировать некоторые столбцы в flex gird.

Flex Grid

column1, column2, .... column35

Я хочу редактировать только из column1 ... column10, остальные столбцы я не хочу редактировать или вводить.

Как это сделать в vb6.

Ответы [ 2 ]

0 голосов
/ 28 августа 2014

Я сделал специальный пользовательский элемент управления в VB6 для редактируемой сетки.Если хотите, я могу отправить вам копию.

Код, который я использую для редактирования ячейки, следующий:

Private Sub fg_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim Cancel As Boolean
    Dim Idc As Long
    Dim x

    If KeyCode = vbKeyEscape And Shift = 0 Then
        If Not fgLocked Then
            If fgRowChanged Then
                RaiseEvent BeforeRestoreBuffer
                For Idc = 1 To UBound(fgBuffer)
                    x = fgBuffer(Idc)
                    fgValues(Idc, fg.Row) = x
                    If fgColFormat(Idc) = "*" And fgBuffer(Idc) <> "" Then
                        fg.TextMatrix(fg.Row, Idc) = "*******"
                    ElseIf fgColFormat(Idc) = "RTF" Then
                        fg.TextMatrix(fg.Row, Idc) = Format(fgBuffer(Idc), "")
                    Else
                        fg.TextMatrix(fg.Row, Idc) = Format(fgBuffer(Idc), fgColFormat(Idc))
                    End If
                Next
                fgRowChanged = False
                RaiseEvent RestoreBuffer
            End If
        End If
    ElseIf KeyCode = vbKeyReturn And Shift = 0 Then
        NextCell
    ElseIf KeyCode = vbKeyF2 And Shift = 0 Then
        If Not fgLocked Then
            If fgColFormat(fg.Col) = "RTF" Then
                CellEditBig fgValues(fg.Col, fg.Row)
            Else
                CellEdit fgValues(fg.Col, fg.Row)
            End If
        End If
    ElseIf KeyCode = vbKeyF2 And Shift = vbShiftMask Then
        If Not fgLocked Then
            CellEditBig fgValues(fg.Col, fg.Row)
        End If
    ElseIf KeyCode = vbKeyDelete And Shift = 0 Then
        If Not fgLocked Then
            RaiseEvent BeforeDelete(Cancel)
            If Not Cancel Then
                If fg.Rows = fg.FixedRows + 1 Then
                    fg.AddItem ""
                    If fgRowNumber Then fg.TextMatrix(fg.Rows - 1, 0) = fg.Rows - 1
                    fgValues_AddItem ""
                End If
                fg.RemoveItem fg.Row
                If fgRowNumber Then Renumera
                fgValues_RemoveItem fg.Row
                LoadBuffer fg.Row
                RaiseEvent AfterDelete
            End If
        End If
    ElseIf KeyCode = vbKeyInsert And Shift = 0 Then
        If Not fgLocked Then
            RaiseEvent BeforeInsert(Cancel)
            If Not Cancel Then
                fg.AddItem "", fg.Row
                If fgRowNumber Then Renumera
                fgValues_AddItem "", fg.Row
                RaiseEvent AfterInsert
            End If
        End If
    Else
        RaiseEvent KeyDown(KeyCode, Shift)
    End If
End Sub
0 голосов
/ 20 января 2012

Я считаю, что MS Flex Grid была разработана для отображения данных, а не для их редактирования. Если вам нужно отредактировать данные ячейки, вы можете выполнить это с помощью Flex Grid, используя метод наложения текстового поля во время выполнения для захвата ввода пользовательских данных и установки свойства «Текст» ячейки в коде. В противном случае вы можете использовать другой элемент управления.

Вот несколько примеров вышеупомянутого подхода:

http://support.microsoft.com/kb/241355

http://www.vb -helper.com / howto_edit_flexgrid_control.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...