2012-01-15 24 views
-3

フレックスグリッドの列の一部を編集したくありません。フレックスグリッド非編集可能列

Flex Grid 

column1, column2, .... column35 

私は1列目から10列目までしか編集しません。残りの列は編集または入力しません。

vb6での操作方法。

+0

など、いくつかのより多くの情報、コード例を、教えてください... – cha0site

答えて

0

MSフレックスグリッドは、データを表示して編集しないように設計されていると思います。セルデータを編集する必要がある場合は、実行時にテキストボックスをスーパーインポーズしてユーザーデータ入力をキャプチャし、コード内のセルの「テキスト」プロパティを設定する方法を使用して、Flexグリッドを使用してデータを編集できます。それ以外の場合は、別のコントロールを使用することもできます。ここで

前述のアプローチのいくつかの例は以下のとおりです。

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

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

0

私が編集可能なグリッドに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 
関連する問題