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

投稿日: 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

どこか抜けていたり、根本的なやり方が違っているのでしょうか?


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

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

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