2015-07-09

PowerShellでユーザーフォームを作る - オプション紹介 -

PowerShellでは、ユーザーが独自にフォームを作成することができます。

以前の投稿で、インプットボックスやメッセージボックスをご紹介しましたが、それは非常にシンプルなものであり、使い勝手が良い反面、自由度が低いものでした。

過去の投稿はこちら↓↓
PowerShellでInputBoxを使用する
PowerShellでMessageBoxを使用する


ユーザーフォーム 2回目は「PowerShellでユーザーフォームを作る - オプション紹介 -」です。
前回は基礎編として、シンプルな入力ボックス(テキストボックス)を表示させました。


   前回の記事はこちら → 【PowerShellでユーザーフォームを作る - 基礎編 -

今回は、前回の内容に様々なオプションをつけることで、ますます自分好みなフォームを作ることを目的とします。


<前回の完成品>



<今回の完成品>


印象がまったく違いますね。
見た目では色が付いただけのように見えますが、実際は細かい部分が多く変わっています。

それでは例文を記述します。



---------ここから-------------------------------------------------------------------------------------
# ユーザーフォームを作る - オプション紹介 -

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

# フォームの作成
$form = New-Object System.Windows.Forms.Form
$form.Text = "入力"
$form.Size = New-Object System.Drawing.Size(260,180)
$form.StartPosition = "CenterScreen"
$form.BackColor = "lightseagreen"
$form.MaximizeBox = $false
$form.MinimizeBox = $false
$form.FormBorderStyle = "FixedSingle"
$form.Opacity = 1

# OKボタンの設定
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(40,100)
$OKButton.Size = New-Object System.Drawing.Size(75,30)
$OKButton.Text = "OK"
$OKButton.DialogResult = "OK"
$OKButton.Flatstyle = "Popup"
$OKButton.Backcolor = "black"
$OKButton.forecolor = "yellow"

# キャンセルボタンの設定
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(130,100)
$CancelButton.Size = New-Object System.Drawing.Size(75,30)
$CancelButton.Text = "Cancel"
$CancelButton.DialogResult = "Cancel"
$CancelButton.Flatstyle = "Popup"
$CancelButton.backcolor = "red"
$CancelButton.forecolor = "black"

# フォントの設定
$Font = New-Object System.Drawing.Font("MS ゴシック",11)

# ラベルの設定
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,30)
$label.Size = New-Object System.Drawing.Size(250,20)
$label.Text = "好きな言葉を入力してください"
$label.forecolor = "blue"
$label.font = $Font

# 入力ボックスの設定
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,70)
$textBox.Size = New-Object System.Drawing.Size(225,50)

# 最前面に表示:する
$form.Topmost = $True

# 入力ボックス部分を選択した状態にする
$form.Add_Shown({$textBox.Select()})

# キーとボタンの関係
$form.AcceptButton = $OKButton
$form.CancelButton = $CancelButton

# ボタン等をフォームに追加
$form.Controls.Add($OKButton)
$form.Controls.Add($CancelButton)
$form.Controls.Add($label)
$form.Controls.Add($textBox)

# フォームを表示させ、その結果を受け取る
$result = $form.ShowDialog()

# 結果による処理分岐
if ($result -eq "OK")
{
$x = $textBox.Text
$x
}

---------ここまで-------------------------------------------------------------------------------------

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

ほとんどの内容は前回と同じですので、今回は追記した部分のみ解説していきます。


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

# フォームの作成
$form.StartPosition = "CenterScreen"
$form.BackColor = "lightseagreen"
$form.MaximizeBox = $false
$form.MinimizeBox = $false
$form.FormBorderStyle = "FixedSingle"
$form.Opacity = 1

・StartPositionプロパティは、フォームを表示させた時の位置を指定します。
・BackColorプロパティは、背景色を指定します。
 色の選択肢については、Google先生にお訊ねくださいm(_ _)m
 ただし、スペースを入れないようご注意ください。
 ○ → darkblue  × → dark blue
・MaximizeBoxプロパティは、最大化ボタンの有無を指定します。
・MinimizeBoxプロパティは、最小化ボタンの有無を指定します。
・FormBorderStyleプロパティは、境界線の種類について指定します。
 指定値はNone、FixedSingle、Fixed3D、FixedDialog、Sizable、FixedToolWindow、SizableToolWindowです。
・Opacityプロパティは、不透明度を指定しています。
 指定値は0~1の間です。


# OKボタンの設定
$OKButton.Flatstyle = "Popup"
$OKButton.Backcolor = "black"
$OKButton.Forecolor = "yellow"

・Flatstyleプロパティはボタンのスタイルを指定します。
 指定値はFlat、Popup、Standard、Systemです。
・BackColorプロパティは、背景色を指定します。
・ForeColorプロパティは、前景色を指定します。


# フォントの設定
$Font = New-Object System.Drawing.Font("MS ゴシック",11)

この記述はオプションとは違うのですが、後述するラベルの設定部分で文字列のフォント設定を簡単にするために、先にここで記述しています。


# ラベルの設定
$label.forecolor = "blue"
$label.font = $font

・ForeColorプロパティは前景色を指定します。
・Fontプロパティはフォントの書式とフォントサイズを指定しています。
 また、今回は記述していませんが、太字や斜体等にすることもできます。


# 最前面に表示:する
$form.Topmost = $True

・Topmostプロパティは、フォームを表示させたときに最前面に出すかどうかを指定しています。
 フォームはよく隠れることがありますので、このプロパティはTrueにすることを推奨します。


# テキストボックスを選択した状態にする
$form.Add_Shown({$textBox.Select()})

・ここでは、フォームを表示させたときに、「テキストボックスを選択している状態」になるよう設定しています。

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

いかがでしたでしょうか。


私がよく使うオプション(プロパティ)を一挙に紹介させていただきました。

インターネットで検索すると、実際はまだまだ多くのプロパティが用意されているようです。
(例えばフォームの背景に画像を指定するBackgroundImageプロパティとか)

しかしほとんどのサイトがC言語やVBでの記述方法について解説しているページとなっていて、PowerShellで使う場合はどのように記述するかよくわからないことが多いです。

今回、この投稿をご覧いただいている方の中には、検索から辿り着いた方もいらっしゃることと思います。
この記事がそんな方々の お役に立てていれば幸いです。

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


0 件のコメント:

コメントを投稿

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