tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルツールバーについて。
記事No273
投稿日: 2003/07/10(Thu) 17:31
投稿者さとみん。
[OSのVer]:Windows    [VBのVer]:VB.NET  
VB6.0のツールバーのプロパティーにはHotTracking(?)があったのですが、VB.NETではなくなってし
まいま
したよね?ボタンの外観を変更できるプロパティーです。

ツリーノードのプロパティーには、HotTrackingが設けられています。
ツールバー上のアイコンにマウスポインタが配置された時、ボタンの外観を変更する方法はありませ
んか?

分かりにくい説明で申し訳ありませんが、お願いいたします。

[ツリー表示へ]
タイトルRe: ツールバーについて。
記事No274
投稿日: 2003/07/10(Thu) 18:30
投稿者NAO★
もっといい方法があるかもしれませんが…

次のようにしていただければ、マウスがボタンの上にある時を検知できますので
そこで変更すればよいかと思います。

   Private Sub ToolBar1_MouseMove(ByVal sender As Object, _
                ByVal e As System.Windows.Forms.MouseEventArgs) Handles ToolBar1.MouseMove
        Dim tb As ToolBar.ToolBarButtonCollection
        Dim btn As ToolBarButton
        Dim rect As Rectangle
        Dim p As Point

        p = ToolBar1.MousePosition()    'マウスの座標

        tb = ToolBar1.Buttons
        For Each btn In tb
            rect = RectangleToScreen(btn.Rectangle) ' ボタンの座標をクライアント領域で求める
            ' マウスがボタン領域内にあるか検査する
            If rect.X <= p.X And p.X <= rect.X + rect.Width And _
               rect.Y <= p.Y And p.X <= rect.Y + rect.Height Then
                Debug.WriteLine("HIT")
            End If
        Next
    End Sub

[ツリー表示へ]
タイトルRe^2: ツールバーについて。
記事No275
投稿日: 2003/07/11(Fri) 09:44
投稿者さとみん。
[OSのVer]:Windows    [VBのVer]:VB.NET  
ありがとうございます。
早速、いまから試してみます。
やはり、座標を使うしか方法はないのですかね(′へ`)
そう考えると、VB6.0の方が楽な面も多々ありますね。
私は,ことしから就職して、VBの勉強を始めたので、6.0の経験はありません。
.NETがどのくらい便利になったのかは、分からずに使用しています。
今後は、たくさんの業を身につけていきたいと思っています。
技を見につけるには、何度もプログラムを作成することですよね?

[ツリー表示へ]
タイトル付け足しなんですが。
記事No276
投稿日: 2003/07/11(Fri) 11:50
投稿者さとみん。
[OSのVer]:Windows    [VBのVer]:VB.NET  
ToolBar上のToolBarButtonを座標で割り当てて、外観を変更していくことは、可能だと思うんですが、
ボタンのサイズを変更した場合に、値のずれが生じませんか?

それが心配だったために、今まで座標を使うことに迷っていました。

例えば....

A・B・C・D の4つのボタンを配置した場合。

Aのボタン領域にマウスポインタがあるかどうかは、
Aボタンの座標内にマウスポインタがあるかどうかできまりますよね?
そして、座標内にある場合には、Aの外観がEに変わり、
Aの座標内から離れた時はEからAの外観に戻るようにしたいのです。
ToolBarを使用しないで、直接Buttonをフォーム上に貼り付ければ、簡単にできるのですが。

インターネットをしているときなどに、ツールバー上の戻るボタンにマウスが近づくと、
矢印が青くなりますよね?
これと同じことがやりたいのです。
VB6.0のときは、簡単に設定ができたのに(T_T)

一度、座標を使って挑戦してみます。
また、良い方法が見つかりましたら、よろしくお願いします。

読んでいただいて、ありがとうございました。

[ツリー表示へ]
タイトルRe: 付け足しなんですが。
記事No277
投稿日: 2003/07/11(Fri) 12:20
投稿者NAO★
ボタンのサイズをリアルタイムに取得しているのでサイズを変更しても大丈夫なはずです。

>Aの座標内から離れた時はEからAの外観に戻るようにしたいのです。
少しの変更でできます。
あと、MouseLeave イベントにも処理が必要かもしれません。

[ツリー表示へ]
タイトルRe^2: 付け足しなんですが。
記事No278
投稿日: 2003/07/11(Fri) 13:04
投稿者さとみん。
[OSのVer]:Windows    [VBのVer]:VB.NET  

ご返信ありがとうございます。

自分の力を出し切ってみます。

今後も質問等させていただくと思いますが、よろしくお願いいたします。

ありがとうございました。

[ツリー表示へ]
タイトルRe: 付け足しなんですが。
記事No280
投稿日: 2003/07/11(Fri) 13:40
投稿者よねKEN
> Aのボタン領域にマウスポインタがあるかどうかは、
> Aボタンの座標内にマウスポインタがあるかどうかできまりますよね?
> そして、座標内にある場合には、Aの外観がEに変わり、
> Aの座標内から離れた時はEからAの外観に戻るようにしたいのです。

ToolBarのAppearanceプロパティをFlatにするのではだめでしょうか?

> インターネットをしているときなどに、ツールバー上の戻るボタンにマウスが近づくと、
> 矢印が青くなりますよね?

イメージの色を変更したいとなると上記のプロパティだけではだめでしょうけど。

[ツリー表示へ]
タイトルRe^2: ツールバーについて。
記事No279
投稿日: 2003/07/11(Fri) 13:36
投稿者よねKEN
>             If rect.X <= p.X And p.X <= rect.X + rect.Width And _
>                rect.Y <= p.Y And p.X <= rect.Y + rect.Height Then

ここは、Rectangle構造体のContainsメソッドでチェックするとよいと思います。

If rect.Contains(P) Then

[ツリー表示へ]
タイトルRe^3: ツールバーについて。
記事No281
投稿日: 2003/07/11(Fri) 14:05
投稿者NAO★
> ここは、Rectangle構造体のContainsメソッドでチェックするとよいと思います。
>
> If rect.Contains(P) Then

そんな便利なメソッドがあったんですね!

[ツリー表示へ]
タイトルRe^4: ツールバーについて。
記事No282
投稿日: 2003/07/11(Fri) 14:51
投稿者さとみん。
[OSのVer]:Windows    [VBのVer]:VB.NET  
皆さん、ありがとうございます。
NAO★さんか教えていただいた方法を参考に、
ImageListに何個かのボタンを用意して、考えてみました。

●ToolBarButton1.ImageIndex = 1
(例えば外観を0にしてあった場合に、外観を1に変更する)

このようにボタンそのものを変更するようにしてみました。
マウスの近付き方によっては、変更しないことも起こりました。
まだ原因は分かっていません。
上下から近づくと変化するのですが、左右から近づくと変化がありません。

私の勉強不足ですが、もっと追及していきたいと思います。
本当に、ありがとうございます。

皆さんは、どのような参考書を利用されていますか?
よい参考書があれば、ぜひ教えてください。

[ツリー表示へ]