投稿日 | : 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イベント内で計算する方法があります。あまり大きな値にすると、
ループ回数が増え、スクロールや表示が遅くなります。