連載:VB 6ユーザーのための
|
|
|
■フォームのプロパティを保存するには
アプリケーションの実行終了時にコントロールのプロパティの値を保存し、起動時にプロパティの値を読み出すだけであれば、なんと、コードは1行も書かなくていい。[プロパティ]ウィンドウの一番上にある(ApplicationSettings)という項目の下の(PropertyBindings)という欄で、プロパティと設定項目名を対応付けるだけでいいのだ。
フォーム上の、ほかのコントロールがない位置をクリックしてから、[プロパティ]ウィンドウの上の方にある(PropertyBindings)の欄の[...]ボタンをクリックしよう(図4)。
図4 (PropertyBindings)欄の[...]ボタンをクリックする |
プロパティの値と、それを保存するための設定項目名とを対応付けるために[...]ボタン( )をクリックする。(PropertyBindings)欄( )が表示されていない場合は、その上にある(ApplicationSettings)欄( )の左にある[+]をクリックして、下位の項目を表示すればよい。 |
[...]ボタンをクリックすると、プロパティの値と設定項目名とを対応付けるためのダイアログ・ボックスが表示される。ダイアログ・ボックスにはプロパティの一覧が表示されているので、その中からウィンドウの位置を表す[Location]を探し、右側の下矢印ボタンをクリックする。ここで「(新規)」を選べば設定項目との対応付けができる(図5)。
図5 プロパティと対応付ける設定項目名を新規作成する |
Locationプロパティの値を保存するための設定項目名を新しく作る。[Location]の欄( )の下矢印ボタンをクリックし、「(新規)」( )をクリックする。 |
続いて、図6のようなダイアログ・ボックスが表示されるので、ここで[Name]の欄に設定項目名を入力する。位置を保存するための項目なので、ここでは「Pos」という名前にした。[Scope]の欄では、ユーザーごとの設定項目(User)か、アプリケーションでの設定項目(Application)かが選べるが、取りあえずここでは「User」を選んでおく。
図6 設定項目名を入力する |
「Name」の欄に「Pos」と入力した。これで、ウィンドウの位置が「Pos」という名前の設定項目として保存されるようになった。 |
実は、Locationプロパティの値を保存することはごく一般的なので、[プロパティ]ウィンドウの(ApplicationSettings)の下位項目には「Location」という欄が用意されている。そこに「Pos」と入力しても構わない。図5でもう一度確認しておくといいだろう。いずれにせよ、この時点で、もうLocationプロパティの値がアプリケーションの終了時に保存され、起動時に読み込まれるようになっている。
これでウィンドウの位置を保存するための設定ができた。ここでプログラムを実行してみると、初回起動時はデスクトップの左上にフォームが表示される。これは[DefaultValue]の値が「0,0」となっているためだ。続いてウィンドウをドラッグして移動させ、[×]ボタンをクリックしてアプリケーションを終了させる。ここで位置が保存される。次にもう一度プログラムを実行すると、設定が読み出され、先ほど終了させた位置にフォームが表示されるはずだ。
■設定項目の値を利用するには
保存された設定項目の値は、アプリケーションの起動時に自動的に読み込まれ、Locationプロパティに設定される。この設定項目は(「Pos」という名前でしたね)は、My.Settingsを使ってコードから参照することができる。
例えば、フォームをロードしたときに、ステータス・バーにウィンドウの位置を表示したいのであれば、フォームのLoadイベント・ハンドラに以下のようなコードを書けばよい。
tsPos.Text = My.Settings.Pos.X & ":" & My.Settings.Pos.Y
tsPosというのはステータス・ストリップ・コントロール上のラベルである(先ほど追加しましたね)。
ただし、このプログラムの場合は、ウィンドウを移動したときにもステータス・バーの表示を変えたいので、フォームのMoveイベント・ハンドラにコードを書いた方がよい。Moveイベントはフォームが表示されるときにも発生するので、前回の位置が正しく表示される。念のため、イベント・ハンドラを作成する手順からおさらいしておこう(図7)。
図7 フォームのMoveイベント・ハンドラを作成する | |||||||||
|
イベント・ハンドラは図8のようになる。今後は、イベント・ハンドラの作り方については画面で説明せず、コードだけを示すので、ここで完全にマスターしておいてほしい。
図8 イベント・ハンドラにコードを入力する |
プロパティを保存するための設定項目Posの値がMy.Settings.Posで参照できる。ここでは、My.Settings.Pos.XはLocation.Xと同じ値であるため、上のコードでLocation.Xを使ってもいいが、My.Settingsで設定項目が参照できることを示すために、このようなコードにした。 |
アプリケーションの実行例は、図9のようになる。起動時には、前回終了時の位置にウィンドウが表示され、ステータス・バーに位置が表示される。ウィンドウを移動させれば、ステータス・バーの表示も変わる。[×]をクリックしてアプリケーションを終了させると、設定が保存される。
図9 実行すると、ウィンドウの位置がステータス・バーに表示される |
タイトル・バーをドラッグして、ウィンドウの位置を移動させ、ステータス・バーの表示が変わることを確認しよう。いったんアプリケーションを終了させ、再度起動して前回の位置に表示されるかも確認しよう。 |
INDEX | ||
連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門 | ||
第3回 VB 2005の“My”の便利さに脱帽! | ||
1.サンプル・プログラム3 − 設定の保存と読み出し | ||
2.フォームのプロパティを保存するには/設定項目の値を利用するには | ||
3.プロパティ以外の値の保存/任意のタイミングで保存・読み込み/結び | ||
「これならマスターできるVB 2005超入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -