投稿日 | : 2004/09/09(Thu) 14:29 |
投稿者 | : ふぉん |
Eメール | : |
URL | : |
タイトル | : Re^4: FlexGridの水平スクロール |
> 私はカーソルを合わせた時にツールチップで表示するようにしています。
貴重なご意見ありがとうございます。
いいアイデアですね!
早速試してみました。
やり方としては、FlexGridのMouseMoveイベントのy座標と、セルの高さから
現在カーソルが指しているセルを判定し、ツールチップに表示する方法です。
一見うまくいったように思いましたが、下の方のセルになるに従って
カーソルが指し示すセルの内容とツールチップで表示される内容がズレていきます。
サンプルコードを載せさせていただきますが、
上の方のセルに関しての表示は大丈夫なようです。
ですが一番下のセルに関してはセルの上側を指した時と、セルの下側を指した時に
異なるツールチップ表示になります。
Const GRID_ROW_HEIGHT As Integer = 230
Private Sub Form_Load()
With MSFlexGrid1
.FixedRows = 0
.FixedCols = 0
.Cols = 1
.Rows = 20
.Width = 2000
.Height = 5000
.ColWidth(0) = .Width
Dim i As Integer
For i = 0 To .Rows - 1
.RowHeight(i) = GRID_ROW_HEIGHT
.TextMatrix(i, 0) = String$(30, Chr$(&H41 + i))
Next
End With
End Sub
Private Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim iCurrentRow As Integer
iCurrentRow = y \ GRID_ROW_HEIGHT
If iCurrentRow > MSFlexGrid1.Rows - 1 Then
'最大行以降にカーソルがあれば、ツールチップは表示しない
MSFlexGrid1.ToolTipText = ""
Else
MSFlexGrid1.ToolTipText = MSFlexGrid1.TextMatrix(iCurrentRow, 0)
End If
End Sub
どこか抜けていたり、根本的なやり方が違っているのでしょうか?