フレキシブルグリッドにチェックボックス


'===========================================================================
'    ファイル名    : frmMain.frm
'    ファイル説明  : フレキシブル グリッドにチェックボックス列を設定
'    作成者        : Uz
'                    E-Mail   : uz@violet.plala.or.jp
'                    HomePage : http://www1.plala.or.jp/uz/
'    作成日        : 1998/06/05 (Fri)
'    修正日        : 2001/08/07 (Tue)
'    備考          : このほかにフォーカスの移動系の処理等、いろいろ制御が必要だと思います。
'===========================================================================
Option Explicit

Private Const CHECK_COL = 2         'チェックボックス列を設定

Private Sub Check1_Click(Index As Integer)
    MSFlexGrid1.TextMatrix(Index, 3) = IIf(Check1(Index).Value, "Check", "Uncheck")
End Sub

'///////////////////////////////////////////////////////////////////////////
'      関数名    : Form_Load
'      目的説明  : 初期設定
'///////////////////////////////////////////////////////////////////////////
Private Sub Form_Load()
    Dim I As Long
    
    On Error Resume Next
    
    With MSFlexGrid1
        .FixedRows = 0
    
        .RowHeightMin = 255         'チェックボックスより行の高さを狭く出来ないように設定
        .ColWidth(CHECK_COL) = 255  'チェックボックス列の列幅設定
        
        For I = .FixedRows To .Rows - 1                                                 '行のあるだけ繰り返す
            .TextMatrix(I, 0) = I
            Call Load(Check1(I))                                                        'コントロール配列の作成
            
            Check1(I).Left = .Left + .ColPos(CHECK_COL) + (.ColWidth(CHECK_COL) - Check1(0).Width) / 2      'コントロール配列のベースの設定
        
            Check1(I).Top = .Top + .RowPos(I) + (.RowHeight(I) - Check1(0).Height) / 2  '位置設定
            Check1(I).ZOrder                                                            '手前に持ってくる
            Check1(I).Visible = .RowIsVisible(I) And .ColIsVisible(CHECK_COL)           'セルが表示されていれば表示する
        Next
    End With
End Sub

'///////////////////////////////////////////////////////////////////////////
'      関数名    : MSFlexGrid1_Scroll
'      目的説明  : スクロールイベント
'///////////////////////////////////////////////////////////////////////////
Private Sub MSFlexGrid1_Scroll()
    Dim I As Long
    
    With MSFlexGrid1
        For I = .FixedRows To .Rows - 1                                                         '行のあるだけ繰り返す
            Check1(I).Visible = .RowIsVisible(I) And .ColIsVisible(CHECK_COL)                   'セルが表示されていれば表示する
            Check1(I).Left = .Left + .ColPos(CHECK_COL) + (.ColWidth(CHECK_COL) - Check1(0).Width) / 2  '位置設定
            Check1(I).Top = .Top + .RowPos(I) + (.RowHeight(I) - Check1(0).Height) / 2  '
        Next
    End With
End Sub

    

サンプル CheckOnGrid.lzh