投稿日 | : 2004/01/30(Fri) 11:21 |
投稿者 | : 聖二 |
Eメール | : oriiji@nifty.com |
URL | : |
タイトル | : MSFlexGridとテキストボックスを組み合わせた場合のスクロールについて |
お世話になります。どうぞよろしくお願い致します。
MSFlexGridとテキストボックスを組み合わせて
以下のように、MSFlexGridに直接記入できる様にしています。
おおよそうまくいくのですが
スクロールバーでスクロールした時に
テキストボックスの値はそのままで
MSFlexGridだけがスクロールしてしまいます。
どうにかならないでしょうか。
自分だけで使うプログラムではないので
その現象を知らない人が使うと若干とまどいがあると思います。
よろしくお願い致します。
Private Sub Form_Load()
Me.Show
With MSFlexGrid1
.Row = 1
.Col = 1
.RowSel = 1
.ColSel = 1
End With
MSFlexGrid1_EnterCell
End Sub
Private Sub MSFlexGrid1_EnterCell()
.Text = ""
.Visible = False
'テキストボックスの位置とサイズを合わせる
.Top = MSFlexGrid1.Top + MSFlexGrid1.CellTop
.Left = MSFlexGrid1.Left + MSFlexGrid1.CellLeft
.Height = MSFlexGrid1.CellHeight
.Width = MSFlexGrid1.CellWidth
.Text = MSFlexGrid1.Text
.Visible = True
.SetFocus
End With
End Sub
Private Sub MSFlexGrid1_LeaveCell()
MSFlexGrid1.Text = ""
MSFlexGrid1.Text = Text1.Text
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim dRow As Long
Dim dCol As Long
If KeyCode = vbKeyReturn Or KeyCode = vbKeyDown Then
dRow = MSFlexGrid1.Row + 1
If dRow < MSFlexGrid1.Rows Then
MSFlexGrid1.Row = dRow
End If
ElseIf KeyCode = vbKeyUp Then
dRow = MSFlexGrid1.Row - 1
If dRow > 0 Then
MSFlexGrid1.Row = dRow
End If
ElseIf KeyCode = vbKeyRight Then
dCol = MSFlexGrid1.Col + 1
If dCol < MSFlexGrid1.Cols Then
MSFlexGrid1.Col = dCol
End If
ElseIf KeyCode = vbKeyLeft Then
dCol = MSFlexGrid1.Col - 1
If dCol > 0 Then
MSFlexGrid1.Col = dCol
End If
End If
End Sub