2016-02-29

PowerShellでユーザーフォームを作る - タブコントロール編

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

今回は「PowerShellでユーザーフォームを作る - タブコントロール編 -」です。

タブをググると次の検索結果が出てきました。

「タブ」とは、コンピュータのディスプレイ上に表示されている1つのウィンドウの中で、複数の画面を切り替えて使用する際の。それぞれの見出しのことです。」

1つのフォーム内に複数の機能を付けたいときにこのタブを使用すると見栄えがよくなり、使い勝手が向上します。

<今回の完成品>


「タブ1を選択した場合」の画像と「タブ2を選択した場合」の画像を表示しています。

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

# タブコントロール

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

# フォーム
$Form = New-Object System.Windows.Forms.Form
$Form.Size = "220,240"
$Form.startposition = "CenterScreen"
$Form.text = "タブ"

# タブコントロール
$TabControl = New-Object System.Windows.Forms.TabControl
$TabControl.size  = "200,200"

# タブページ1
$Tab1 = New-Object System.Windows.Forms.TabPage
$Tab1.Text = "タブ1"
$Tab1.BackColor = "powderblue"

# タブページ1の中のラベル
$Tab1Label = New-Object System.Windows.Forms.Label
$Tab1Label.location = "10,10"
$Tab1Label.text = "タブ1のラベル"
$Tab1.Controls.AddRange(@($Tab1Label))

# タブページ2
$Tab2 = New-Object System.Windows.Forms.TabPage
$Tab2.Text = "タブ2"

# タブページ2の中のボタン
$Tab2Button = New-Object System.Windows.Forms.Button
$Tab2Button.Location = "50,80"
$Tab2Button.size = "80,30"
$Tab2Button.text  = "閉じる"
$Tab2Button.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$Tab2.Controls.AddRange(@($Tab2Button))

# タブコントロールに各タブページを入れる
$TabControl.Controls.AddRange(@($Tab1,$Tab2))

# フォームにタブコントロールを入れる
$Form.Controls.Add($TabControl)

# フォームを表示
$Form.Showdialog()

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

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

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

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

フォームにタブを設置するには、ざっくり次のような手順が必要となります。

  1.フォームを作る
  2.タブコントロールを作る
  3.タブページを作る
  4.ウィジット(ボタンやラベル等)を作る
  5.ウィジットをタブページに入れる
  6.タブページをタブコントロールに入れる
  7.タブコントロールをフォームに入れる

特に5~7については記述する順番を間違えないようご注意ください。
表示されない可能性があります。
# タブコントロール
$TabControl = New-Object System.Windows.Forms.TabControl
$TabControl.size  = "200,200"
ここでは、タブコントロールをインスタンス化し、かつそのサイズを指定しています。(上記2に相当)

●タブの表示位置を変更するにはAlignmentプロパティをTop、Bottom、Left、Rightから指定します。(デフォルトはTop)

●タブの複数行表示を許可するにはMultilineプロパティを$Trueに設定します。

●タブの外観を変更するにはAppearanceプロパティをButtons、FlatButtons、Normalから指定します。(デフォルトはNormal)

# タブページ1
$Tab1 = New-Object System.Windows.Forms.TabPage
$Tab1.Text = "タブ1"
$Tab1.BackColor = "powderblue"
ここではタブページをインスタンス化しています。
Textプロパティはタブ部分に表示するテキストを指定し、BackColorプロパティはそのタブページ全体の背景色を指定しています。

# タブコントロールに各タブページを入れる
$TabControl.Controls.AddRange(@($Tab1,$Tab2))
作成したタブページをタブコントロールに入れる場合は上記のように記述します。
次のように記述しても同じです。
$TabControl.Controls.Add($Tab1)
$TabControl.Controls.Add($Tab2)

# フォームにタブコントロールを入れる
$Form.Controls.Add($TabControl)
フォームにタブコントロールを入れる場合は上記のように記述します。

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

解説は以上となります。
※各ウィジット(ラベル・ボタン)については省略させていただきました。

タブを使用する利点としては、外観をスッキリできることです。
1つのウィンドウ内に、全ての情報を詰め込むと見た目も悪くなり、作業効率も落ちてしまいます。
そこで例えば、「設定」というタブを設置し、そこに変更頻度の低い情報(例えばフォルダのパス等)をまとめておけば、メインタブの内容はかなりシンプルにすることができます。

過去に作成したフォームを見直し、「ごちゃごちゃしてるなー」と感じた場合は、タブの使用を検討してみてはいかがでしょうか。

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


0 件のコメント:

コメントを投稿

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