連載:VB 6ユーザーのための
これならマスターできるVB 2005超入門

第7回 リソースを使ったマルチ・リンガルなVBアプリケーション

羽山 博
2007/03/13
Page1 Page2 Page3

リソースとは?

Back Issue
1
VB 6の皆さん、これはもうVB 2005使うしかないでしょ
2 コントロール配列がなくても大丈夫!
3 VB 2005の“My”の便利さに脱帽!
4 トラブルは水際で防げ〜入力時のチェックとエラー処理
5 データベースはじめの一歩
6 配列ってこんなに便利だったの!?

 ユーザーの注意を促すために表示するメッセージやダイアログ・ボックスでの設定項目のテキストなどは、文字列定数としてハード・コーディングしておくと、後で変更があったときに修正が煩雑になる。一方、それらの文字列をファイルやレジストリに記録しておくと保守は用意になるが、読み出しのためのコードが煩雑になってしまう。

 このような問題を解決できるのが「リソース」だ。プログラムの中でよく使われる文字列や画像などをリソースとしてまとめて定義しておけば、保守も容易だし、コードの記述も簡単になる。さらに、利用するリソースを状況に合わせて変更することもできるので、柔軟性のあるプログラムを作ることができる(図1)。


図1 プログラムでのリソース利用のイメージ
リソースでは、文字列や画像などを、コードから切り離して管理することができる。修正があった場合はリソースを修正するだけでいい。また、通常のファイルから読み出すよりも利用がはるかに簡単。

 今回のプログラムでは、リソースの簡単な使い方と、複数のフォームの利用をテーマとして取り上げる。具体的には、ダイアログ・ボックス(として使用するフォーム)の設定によって、メインのフォームに表示されるメッセージの内容を変更するというもの。機能が容易に理解でき、さまざまな応用ができるように、できるだけシンプルなプログラムとした。

 メッセージの内容は、ダイアログ・ボックスで[日本語]を選択すると日本語で表示され(これがデフォルトの状態)、[英語]を選択すると英語で表示されるものとする。だが、まずは文字列リソースの値を取得し、フォーム上に表示するところから始めよう。

サンプル・プログラム9(前半) − 文字列リソースの値を取得する

 ではまず、サンプル・プログラムの実行例を見てみよう(図2)。プログラムを実行すると、[今日の言葉]というフォームにことわざが表示される。この、ことわざの内容を文字列リソースから取得し、表示しようというわけだ。今回の記事の前半では、そこまでを追いかける。

 次に、[オプション]ボタンをクリックすると、半透明のダイアログ・ボックスが表示され、言語が選択できるようになる。ここで、[英語]を選択し、[OK]をクリックすれば、ことわざの内容が英語で表示される。この英語のことわざも文字列リソースから取得する。これについては後半で見ていくこととする。


(前半ではここまでを見る)

[オプション]をクリックする


(後半ではこれ以降を見る)

[英語]を選択する


図2 プログラムの実行例
プログラムを実行すると「鉄は熱いうちに打て」ということわざが表示される。[オプション]ダイアログ・ボックスでの選択に合わせて、英語で「Make hay while the sun shines(太陽が出ているうちに干し草を作れ)」と表示することもできる。ちなみに、いずれも「好機を逃すな」という意味のことわざ。まずは、文字列リソースの値を取得し、メッセージを表示するところから始めよう。

■フォームのデザイン

 当面の目標は、リソースに文字列を追加し、その値を取得することだけなので、フォームのデザインも簡単だ。図3と表1に従って、メインのフォームにラベルとボタンを配置しよう。


図3 メイン・フォームのデザイン
図中の赤丸数字は次に示す表1の項目と対応している。
  メッセージを表示するためのラベル。テキストは設定されていない。
  [オプション]ダイアログ・ボックスを表示させるためのボタン。
  プログラムを終了させるためのボタン。

番号 コントロール プロパティ 設定値
フォーム Name frmMain
Text 今日の言葉
CancelButton btnExit
FormBorderStyle FixedDialog
MaximizeBox False
StartPosition CenterScreen
ラベル Name lblMessage
Text (なし)
ボタン Name btnOption
Text オプション(&O)
ボタン Name btnExit
Text 終了(&X)
表1 コントロールに設定するプロパティとその値の一覧
赤丸数字は図3に示した各コントロールに対応している。

 以上でフォームのデザインは終わり。次に文字列リソースを追加する手順を見ていこう。

■リソースを追加する

 リソースを追加するには、まず、メニューから[プロジェクト]−[<プロジェクト名>のプロパティ]を選択して、アプリケーションのプロパティを表示し、[リソース]タブをクリックする。

 通常、図4のように、文字列リソースの一覧が表示されているので、その表の[名前]欄にリソース名を入力し、[値]欄に対応する文字列を入力していけばよい。もし、別の種類のリソースが表示されていれば、左上の[▼]をクリックし、[文字列]を選択する。


図4 リソースを追加する
メニューから[プロジェクト]−[<プロジェクト名>のプロパティ]を選択して、アプリケーションのプロパティを表示する。
  [▼]ボタンをクリックすれば、編集するリソースの種類が選択できる。
  文字列リソースの名前を入力する。
  リソースの値を入力する。

■文字列リソースの値を取得する

 文字列リソースの値は、コードから「My.Resources.リソース名」で参照できる。例えば、フォームのLoadイベント・ハンドラで、文字列リソースの値をラベルに表示するのであれば、以下のようなコードを書けばよい。

Private Sub showMsg(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  lblMessage.Text = My.Resources.Msg1

End Sub
フォームのロード時に文字列リソースの値をラベルのテキストに代入するコード
ファイルから文字列を読み出すのに比べるとはるかに簡単。

 この時点でも、プログラムは実行できる。この先に進む前に一度試しておくといいだろう。結果は図2の最初の画面と同じになる。当然のことながら、[オプション]ボタンをクリックしても、[オプション]ダイアログ・ボックスは表示されない。

 どうだろう。あっけないくらいに簡単だったと思う。が、ここまではウオーミングアップ。次に、ダイアログ・ボックスを表示し、そこでの設定に従って、メッセージの表示言語が変えられるようにプログラムを発展させてみよう。


 INDEX
  連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門
  第7回 リソースを使ったマルチ・リンガルなVBアプリケーション
  1.サンプル・プログラム9(前半) − 文字列リソースの値を取得する
    2.サンプル・プログラム9(後半) − ダイアログの設定により、利用するリソースを変える
    3.フォームを表示し、設定内容を取得するためのコード
 
インデックス・ページヘ  「これならマスターできるVB 2005超入門」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH