2015-09-23

[PowerShell] ツールチップを使用する

今回はPowerShellでツールチップを使用するときの記述方法をご紹介します。

「ツールチップ」とは"カーソル(主にマウスポインタ)と連動して使用される。ユーザがカーソルを何かの項目に合わせたとき、その項目に覆いかぶさるような形で小さな枠が出現し、その枠内には選択された項目に関する補足情報が表示される。"とWikipediaには書かれています。

要するに下の写真のようなものです。

<今回の完成品>


この写真の「タイトル 表示させる文字列」の部分がツールチップです。
(これが「ツールチップ」という名称だということは私も最近知りました。)

今回の完成品では、ボタンAにマウスカーソルを合わせる(乗せる)と、ツールチップが表示されるようになっています。

それでは、スクリプトを記述します。


---------ここから-------------------------------------------------------------------------------------
# ツールチップとマウスオーバーイベント

# アセンブリのロード
Add-Type -AssemblyName System.Windows.Forms

# ツールチップ
$Tooltip = New-Object System.Windows.Forms.Tooltip
$Tooltip.ShowAlways = $True
$Tooltip.ToolTipIcon = "none"
$Tooltip.ToolTipTitle = "タイトル"
$Tooltip.UseFading = $False
$Tooltip.AutoPopDelay = 3000

# フォーム
$form = New-Object System.Windows.Forms.Form
$form.Size = "200,200"
$form.StartPosition = "centerscreen"
$form.Text = "タイトル"
$form.MaximizeBox = $false
$form.MinimizeBox = $False

# ボタンA
$ButtonA = New-Object System.Windows.Forms.Button
$ButtonA.Location = "50,50"
$ButtonA.Size = "80,30"
$ButtonA.Text  = "ボタンA"
$ButtonA.FlatStyle = "popup"
$form.Controls.Add($ButtonA)

# ボタンAのマウスオーバーイベント
$ButtonA.Add_MouseHOver({$Tooltip.SetToolTip($ButtonA,"表示させる文字列")})

# フォームの表示
$form.Showdialog()
---------ここまで-------------------------------------------------------------------------------------

上記内容をコピーし、PowerShell ISEに貼り付けて、実行してみてください。
完成品と同じものが表示されるはずです。

それでは解説をしていきます。
また過去の記事で解説した部分については割愛致します。

内容をご確認いただきたい場合は【ユーザーフォーム - 基礎編 -】をご覧ください。


*****解説*****************************************************************************

# ツールチップ
$Tooltip = New-Object System.Windows.Forms.Tooltip
$Tooltip.ShowAlways = $True
$Tooltip.ToolTipIcon = "none"
$Tooltip.ToolTipTitle = "タイトル"
$Tooltip.UseFading = $False
$Tooltip.AutoPopDelay = 3000


ここではまず「ツールチップを使用する」宣言をすると同時に、各プロパティの値を設定しています。
この時点ではまだボタンAにツールチップがセットされていません。

ShowAlwaysプロパティ・・・フォームが非アクティブのときにもツールチップを表示させるかどうかを設定。
ToolTipIconプロパティ・・・ツールチップ内の左側に表示させるアイコンをError、Info、Warining、Noneから指定。
ToolTipTitleプロパティ・・・ツールチップ内の上側に表示させる文字列を指定。
UseFadingプロパティ・・・ フェード効果を使用して表示するか否かを指定。規定値はTrue。
AutoPopDelayプロパティ・・・マウスカーソル静止時、ツールチップを表示させる時間をミリ秒で指定。3000ミリ秒は3秒。


# ボタンAのマウスオーバーイベント
$ButtonA.Add_MouseHOver({$Tooltip.SetToolTip($ButtonA,"表示させる文字列")})


ここでは、別途作成したボタンAにマウスオーバーイベントを設定しています。
イベントとは「○○したときに××をする」といった動作を指定するものです。

マウスオーバーイベントの内容には、ツールチップで表示させる文字列を指定しています。
当然、クリックイベントの記事でもご紹介した通り、イベントの内容は変数に置き換えることも可能です。

$Event = {
$Tooltip.SetToolTip($ButtonA,"表示させる文字列")
}
$ButtonA.Add_MouseHOver($Event)

このように記述しても結果は同じになります。

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

解説は以上となります。

ツールチップは、実際あってもなくても問題はありません。
しかし、フォーム作成者だけではなく様々な人がそのフォームを使用する場合は、適度にツールチップを使用することで補足説明の役割を果たし、そのフォームはさらに使いやすいものになります。

仕事でフォームを作成する場合は、要所要所で上手にツールチップを活用していきましょう。

=======================================================================
本投稿に関する疑問や質問には可能な限りお答えさせていただきます。
お気軽にコメントやメールをお送りください。
(リクエストも歓迎します)
メール:tkk-powershell@gmail.com
また、間違いのご指摘・アドバイス等も歓迎いたします。
=======================================================================
Google+、Twitterで更新情報をお届けしています!
ぜひフォローをお願い致します!           
=======================================================================
スポンサーリンク


1 件のコメント:

  1. 最近、すごく参考にさせてもらってます。
    「HOver」「オーバー」が気になる。。。

    返信削除

疑問・質問・リクエスト お気軽にどうぞ (^O^)/