フレックスグリッドの列の一部を編集したくありません。フレックスグリッド非編集可能列
Flex Grid
column1, column2, .... column35
私は1列目から10列目までしか編集しません。残りの列は編集または入力しません。
vb6での操作方法。
フレックスグリッドの列の一部を編集したくありません。フレックスグリッド非編集可能列
Flex Grid
column1, column2, .... column35
私は1列目から10列目までしか編集しません。残りの列は編集または入力しません。
vb6での操作方法。
MSフレックスグリッドは、データを表示して編集しないように設計されていると思います。セルデータを編集する必要がある場合は、実行時にテキストボックスをスーパーインポーズしてユーザーデータ入力をキャプチャし、コード内のセルの「テキスト」プロパティを設定する方法を使用して、Flexグリッドを使用してデータを編集できます。それ以外の場合は、別のコントロールを使用することもできます。ここで
前述のアプローチのいくつかの例は以下のとおりです。
私が編集可能なグリッドに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
など、いくつかのより多くの情報、コード例を、教えてください... – cha0site