[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/11/08(Mon) 12:20
投稿者名:ひろ
Eメール:
URL :
タイトル:
MSFlexGridでスクロールしない列を作る。
MSFLEXGRIDでスクロールしない列を作りたいのですが、固定列でなく
(カーソルをもっていきたいため)、やる方法はありますか?
教えてください。

投稿時間:2004/11/09(Tue) 10:47
投稿者名:jikoryuu
Eメール:
URL :
タイトル:
Re: MSFlexGridでスクロールしない列を作る。
スクロールのたびに書き換える方法です。
スクロール時にちらつきますが、Redrawを書き換え時にOffにすると、最終行で
バグが発生し、コントロールが操作不能になります。ですのでRedrawはスクロール時
にはFalseにしないで下さい。

Private Sub Form_Load()
  Dim i As Long
  Dim j As Long
  With MSFlexGrid1
    .Cols = 3
    .Rows = 101
    For i = 1 To 100
      .Row = i
      .Col = 1
      .Text = i
      .Col = 2
      .Text = "Row" & i
    Next
  End With
  
End Sub

Private Sub MSFlexGrid1_Scroll()
  With MSFlexGrid1
    Dim i As Long
    Dim j As Long
    On Error GoTo Err_Section
    If .LeftCol = 1 Then
      j = .TopRow
      .Col = 1
      For i = j To 15 + j '15は可視可能な最大行数
        .Row = i
        .Text = i - j + 1
      Next
    End If
  End With
  Exit Sub
Err_Section:
  If Err.Number > 0 Then
    '最終行に近づき行指定範囲を超えたとき
  'Row指定時に限界を越えるためエラーになります
  End If
End Sub

可視可能な最大行数についてはResize時などに表示行数を計算するか
Scrollイベント内で計算する方法があります。あまり大きな値にすると、
ループ回数が増え、スクロールや表示が遅くなります。