[リストへもどる]
一括表示

投稿時間:2004/08/05(Thu) 14:16
投稿者名:マスオカリュウショウ
URL :
タイトル:
MSFLEXGRID二つを同期させる方法
一つのフォームの右半分と左半分にそれぞれMSFLEXGRIDコントロールを貼り付けて
同じDBのレコードを表示させています
右側のグリッドにレコードのキー項目12個を表示させ
左側のグリッドに同じレコードの数字項目42個を表示させています
左側のみ左右にもスクロールします。

右側の行を上下に移動したときに左側の行も同じようにスクロールさせて
左右で同じ行が並ぶようにしたいのですがうまく制御できません。
なにか良い方法が無いでしょうか。

投稿時間:2004/08/05(Thu) 15:14
投稿者名:おじん
Eメール:
URL :
タイトル:
Re: MSFLEXGRID二つを同期させる方法
DBのことは別にして、次の例では、縦方向には「同期」します。
これ、「同期」といいませんか?間違っていたらごめんなさい。
Msflexgridを2つ、同じの大きさ(高さ)で、縦スクロールは
2つとも必要。

Option Explicit

Private Sub Form_Load()
    Dim n&
    Randomize
    With MSFlexGrid1      '仮に連番をセット
    .Rows = 64
    For n = 1 To 63
        .TextMatrix(n, 0) = CStr(n)
    Next n
    End With
    With MSFlexGrid2
    .Rows = 64
    For n = 1 To 63
        .TextMatrix(n, 0) = CStr(Rnd * 100)
    Next n
    End With
End Sub

Private Sub MSFlexGrid1_Scroll()
    MSFlexGrid2.TopRow = MSFlexGrid1.TopRow
End Sub

Private Sub MSFlexGrid2_Scroll()
    MSFlexGrid1.TopRow = MSFlexGrid2.TopRow
End Sub

投稿時間:2004/08/05(Thu) 16:17
投稿者名:マスオカリュウショウ
URL :
タイトル:
Re^2: MSFLEXGRID二つを同期させる方法
すばやいお返事ありがとうございます。
TopRowをScrollとRowColChangeのイベントで使うことでうまくできました。

ちなみに、私のプログラムでは以下のようにしてみました。

'**************************************************
'*  左右のグリッドのカレント行を同期させる
'**************************************************
Private Sub DBGrid1_RowColChange(index As Integer)
  
   If index = 0 Then
      DBGrid1(1).TopRow = DBGrid1(0).TopRow
   Else
      DBGrid1(0).TopRow = DBGrid1(1).TopRow
   End If
  
End Sub

'**************************************************
'スクロールに合せてカレントセルを移動する
'**************************************************
Private Sub DBGrid1_Scroll(index As Integer)
  
   If index = 0 Then
      DBGrid1(1).TopRow = DBGrid1(0).TopRow
   Else
      DBGrid1(0).TopRow = DBGrid1(1).TopRow
   End If
  
End Sub