VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -