2016-03-07

PowerShellでユーザーフォームを作る - カラー選択ダイアログを使用する -

PowerShellでは、ユーザーの好みに合わせて、独自にフォームを作成することができます。

今回は「PowerShellでユーザーフォームを作る - カラー選択ダイアログを使用する -」です。

色というのは些細なことのようで、意外と重要な役割を持っているんじゃないかと筆者は考えています。

例えば、デフォルトでは背景が白っぽい色で、文字が黒になっています。
白というのは光を多く放っている=目に悪いというようなイメージがあり、長時間見続けていると、眼精疲労などにつながってしまうかもしれません。(あくまで個人的な意見です)

さらに個人の好みという問題もあります。
貴殿が作成したオリジナルソフトを、同じ部署のみんなで使用する場合などは、背景を黒にしたい人、文字は赤にしたい人なども出てくるでしょう。

今回の内容は、そんな場合に備えてぜひ知っておいて欲しいものです。

<今回出てくるダイアログ>


誰でも一度は見たことがあるものだと思います。

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

# カラーダイアログを使用する

# アセンブリの読み込み
Add-Type -assemblyName System.Windows.Forms

# カラーダイアログ
$dialog = New-Object System.Windows.Forms.ColorDialog
$result = $dialog.ShowDialog()

if ( $result -eq "OK" )
{
    $COLOR = $dialog.Color
    [System.Windows.Forms.MessageBox]::Show("選択された色は「$COLOR」です", "色")
}

上記内容をコピーし、PowerShell ISEに貼り付けて、実行するとカラー選択ダイアログが表示されます。
色を選択し、OKボタンを押すとメッセージボックスで選んだ色を表示します。

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

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

*****解説*****************************************************************************
# カラーダイアログ
$dialog = New-Object System.Windows.Forms.ColorDialog

ここでは、ColorDialogクラスをインスタンス化しています。
カラー選択ダイアログで有用なプロパティを2つご紹介します。
●FullOpenプロパティ
 ・カスタムカラー部分を初めから展開しておくかどうかを指定します。
  (既定値はFalse)
 ・記述例…$dialog.FullOpen = $True

●AllowFullOpenプロパティ
 ・カスタムカラー部分の使用可否を指定します。
  (規定値はFalse)
 ・記述例…$dialog.AllowFullOpen = $True
$result = $dialog.ShowDialog()
ここでダイアログを表示させ、かつ、その結果を受け取り、変数resultに格納しています。
if ( $result -eq "OK" )
{
    $COLOR = $dialog.Color
    [System.Windows.Forms.MessageBox]::Show("選択された色は「$COLOR」です", "色")
}
ここは、変数resultの結果が「OK」であった場合のみ(ダイアログでOKボタンが押された場合のみ)処理される部分です。
内容は、選択された色の情報を変数COLORに格納し、それをメッセージボックスで表示します。

ここでいう「色の情報」には次の内容が含まれています。
 ・R
 ・G
 ・B
 ・A
 ・IsknownColor
 ・IsEmpty
 ・IsNamedColor
 ・IsSystemColor
 ・Name

この中で注目すべきポイントは次の通りです。

1.RGBA
RGBAはRed(赤)・Green(緑)・Blue(青)・Alpha値(透明度)を数値で返します。

2.IsknownColor
IsknownColorは、その色が「よく知られている色か」をTrueかFalseで返します。
例えば基本色の赤を選択した場合はTrueとなり、カスタムカラーを選択した場合はFalseとなります。

3.Name
Nameはそのままずばり色の名前を返します。
例えば基本色の赤を選択した場合は「red」となり、カスタムカラーを選択した場合は16進数値(ffff8000等)を返します。


上記で取得したカラーを、別のコントロールで使用するには、次のように記述します。
# 選択した色を、フォームの背景色に設定
$Form.BackColor = $COLOR
#  ($Form.BackColor = "#" + $COLOR.Name でも可)

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

解説は以上となります。

意外と色にこだわりがある方はいらっしゃいます。
オリジナルフォーム内のオプションのひとつとして実装してみてはいかがでしょうか。

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


0 件のコメント:

コメントを投稿

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