tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルListBoxのToolTipText表示
記事No13852
投稿日: 2009/07/14(Tue) 13:52
投稿者まなぶ
いつもお世話になっております。

ListBoxに表示されたリストをToolTipTextで表示したいと思っております。
ListBox内の選択したリストは、List.ListIndexで取得できるのですが、
選択せずにマウスを重ねた場所のリストを次々に表示していきたいのです。

可能でしょうか?
可能ならどのようにすればいいのでしょうか?
お教えいただけますか?

環境:Windows2000 / VB6-sp6

[ツリー表示へ]
タイトルRe: ListBoxのToolTipText表示
記事No13854
投稿日: 2009/07/14(Tue) 14:12
投稿者花ちゃん
> ListBoxに表示されたリストをToolTipTextで表示したいと思っております。
> ListBox内の選択したリストは、List.ListIndexで取得できるのですが、
> 選択せずにマウスを重ねた場所のリストを次々に表示していきたいのです。

ヒントだけ、現在のマウスの位置のアイテムが解れば後はできますよね。

 http://hanatyan.sakura.ne.jp/vbhlp/Listdrag.htm

[ツリー表示へ]
タイトルRe^2: ListBoxのToolTipText表示
記事No13855
投稿日: 2009/07/14(Tue) 14:29
投稿者まなぶ
管理人さま、お返事をありがとうございます。

「現在のマウスの位置」とアドバイスをいただき、ありがとうございます。
リンク先ではマウスをクリックしたときの座標を取得するようですが、
私がしたいのは、マウスはクリックせずにマウスのポインターが重なった
位置のリストを取得したいのです。

説明不足、理解不足でしたら大変申し訳ありませんが、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe^3: ListBoxのToolTipText表示
記事No13856
投稿日: 2009/07/14(Tue) 14:57
投稿者花ちゃん
> 「現在のマウスの位置」とアドバイスをいただき、ありがとうございます。
> リンク先ではマウスをクリックしたときの座標を取得するようですが、
> 私がしたいのは、マウスはクリックせずにマウスのポインターが重なった
> 位置のリストを取得したいのです。

コードをご覧になって試されたのでしょうか?
Private Sub List1_MouseMove(Button As Integer, _
                             Shift As Integer, x As Single, y As Single)
   Dim MPos As POINTAPI
   Dim Ind  As Long
   GetCursorPos MPos       '現在のマウス座標を取得
   'そのマウス座標から行位置を取得
   Ind = LBItemFromPt(List1.hWnd, MPos.x, MPos.y, False)
   If Ind <> -1 Then
      Debug.Print Ind, List1.List(Ind)
   End If
End Sub

[ツリー表示へ]
タイトルRe^4: ListBoxのToolTipText表示
記事No13857
投稿日: 2009/07/14(Tue) 16:15
投稿者まなぶ
理解不足、確認不足でした。
お恥ずかしい限りです。

良きアドバイスをありがとうございます。
早速、アドバイスを基に作成したのですが、表示が上手く行きません。

ToolTipTextで表示したいのですが、表示させるテキストが長く画面に
表示しきれないので、複数行で表示するようにしたいのです。

リストをクリックした場合は複数行で表示できたのですが、アドバイスを
基に作成した場合は表示できません。
ちなみに、アドバイスを基に作成した1行表示(通常のToolTipText表示)は
表示できました。また、変数「TipText」は取得できています。

頼ってばかりになりますが、もう1度ヒントをいただけますか?
よろしくお願いします。


****************************************************************************

Private Sub lstLOG_MouseMove(Index As Integer, Button As Integer, _
                               Shift As Integer, X As Single, Y As Single)

    Dim MPos As POINTAPI
    Dim Ind  As Long

    Set mclsToolTip = New clsToolTip

    '通常のToolTipText表示
    'TipText = List.List(ListIndex)

    GetCursorPos MPos
    Ind = LBItemFromPt(List.hWnd, MPos.X, MPos.Y, False)
    If Ind <> -1 Then
        Debug.Print Ind, List.List(Ind)
        TipText = List.List(Ind)

        '通常のToolTipText表示
        'List.ToolTipText = TipText

        '複数行のToolTipText表示
        With mclsToolTip
            Call .mCreate(List.hWnd)
            Call .mToolAdd(1, TipText)
            .pMaxWidth = 1000
        End With

    End If

End Sub

****************************************************************************

[ツリー表示へ]
タイトルListBoxのToolTipText(追加)
記事No13858
投稿日: 2009/07/14(Tue) 16:59
投稿者花ちゃん
> ToolTipTextで表示したいのですが、表示させるテキストが長く画面に
> 表示しきれないので、複数行で表示するようにしたいのです。

たしか、標準のToolTipText では、複数行のテキストを表示できなかったような。
Form 等を使って表示するか、ここのサンプルのようにAPI関数で自作するかしか
ないかと思います。

 http://hanatyan.sakura.ne.jp/samplepic/vb6_313.htm

 http://www.mitene.or.jp/~sugisita/vb6_cmctl.html


> リストをクリックした場合は複数行で表示できたのですが、アドバイスを
> 基に作成した場合は表示できません。
> ちなみに、アドバイスを基に作成した1行表示(通常のToolTipText表示)は
> 表示できました。また、変数「TipText」は取得できています。
>         '複数行のToolTipText表示
>         With mclsToolTip
>             Call .mCreate(List.hWnd)
>             Call .mToolAdd(1, TipText)
>             .pMaxWidth = 1000
>         End With

mclsToolTip がどのような物なのか解らないので答えようがありません。
mclsToolTip が表示されるまでの設定時間があるなら短くするとか、List1_MouseMove
イベントではなく、タイマーコントロールのイベントを使ってみるとか?  位しか...。

[ツリー表示へ]
タイトルRe: ListBoxのToolTipText(追加)【クローズ】
記事No13859
投稿日: 2009/07/16(Thu) 08:15
投稿者まなぶ
花ちゃん(管理人)さま

要件が見直され、ToolTipText以外でも表示できればいいとのことですので、
とりあえず、表示したいリストはフォーム下段に設けたラベルに表示するようにしました。

本件は技術向上も含め、改めて開発に掛かりたいと思います。
また、アドバイスをいただいた「タイマーコントロール」に関しても試して見たいと思います。

お世話になり、ありがとうございました。
また、何かありましたら、よろしくお願いいたします。

よって、本件はクローズさせていただきます。

まなぶ

[ツリー表示へ]