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

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

羽山 博
2007/03/13
Page1 Page2 Page3

サンプル・プログラム9(後半) − ダイアログ・ボックスの設定により、利用するリソースを変える

 後半では、[オプション]ダイアログ・ボックスを表示する必要があるので、プロジェクトに新しいフォームを追加しておく。

 メニューから[プロジェクト]-[Windowsフォームの追加]を選択するか、[標準]ツールバーの左から3つ目のボタンの[▼]をクリックし、[Windowsフォームの追加]を選択しよう。すると、図5のようなダイアログ・ボックスが表示される。



[Windowsフォームの追加]をクリック


図5 プロジェクトに新しいフォームを追加する
作成するフォームは、通常の[Windowsフォーム]でも構わないが、ダイアログ・ボックスとして利用するならテンプレートとして[ダイアログ]を選ぶと便利。
  [標準]ツールバーの左から3番目のボタンの[▼]をクリックする。
  [Windowsフォームの追加]を選択する。
  [ダイアログ]を選択する。
  [追加]ボタンをクリックする。

 ダイアログ・ボックスを作成するのであれば、テンプレートとして[Windowsフォーム]または[ダイアログ]を選択するとよい。[Windowsフォーム]の場合は、いわば白紙のフォームが新しく作られるが、[ダイアログ]の場合は、[OK]ボタンと[キャンセル]ボタンがあらかじめ配置されたフォームが作られる。また、それぞれのボタンをクリックしたときのイベント・ハンドラもあらかじめ作られている。

■追加したフォームのデザイン

 では、ダイアログ・ボックスとして新しく作成したフォームにコントロールを配置し、プロパティを設定しておこう。図6と表2のように設定するといい。

 ただし、[ダイアログ]を選択して作成したフォームの場合、FormBorderStyleプロパティやMaximizeBoxプロパティ、MinimizeBoxプロパティなどにはダイアログ・ボックスとして最適な値があらかじめ設定されている。それらのデフォルト値については表2には示していない。


図6 [オプション]ダイアログ・ボックスのデザイン
図中の赤丸数字は次に示す表2の項目と対応している。
  メッセージの表示言語を選択するためのラジオ・ボタン。
  [OK]ボタンと[キャンセル]ボタンは、あらかじめ配置されたテーブル・レイアウト・パネルの中にあり、レイアウトが調整しやすくなっている。

番号 コントロール プロパティ 設定値
フォーム Name dlgOption
Text オプション
AcceptButton btnOK
CancelButton btnCancel
Opacity 75%
StartPosition Manual
ラジオ・ボタン Name rbJapanese
Text 日本語(&J)
ラジオ・ボタン Name rbEnglish
Text 英語(&E)
ボタン Name btnOK
Text OK
ボタン Name btnCancel
Text キャンセル
表2 コントロールに設定するプロパティとその値の一覧
赤丸数字は図6に示した各コントロールに対応している。

 ここでは、フォームのOpacityプロパティに注目しよう。これは不透明度を指定するためのプロパティで、100%なら完全に不透明になり、背後のウィンドウは隠されてしまう。75%であれば、不透明度が75%なので、少しだけ透明になる。また、StartPositionプロパティをManualにしているが、これはダイアログ・ボックスの位置をコードで設定し、メインのフォームから少しずらして表示するためだ。

■新しいリソース・ファイルの作成

 素朴に考えると、[オプション]ダイアログ・ボックスの設定に従って表示言語を変えるには、日本語なら「Msg1Japanese」という文字列リソースの値をラベルに表示し、英語なら「Msg1English」という文字列リソースの値をラベルに表示するという方法が思いつくだろう。しかし、それではあまりにも面倒だ。

 ここで取り上げたサンプル・プログラムであれば、表示される項目が1つだけなので、さほど不都合は感じないかもしれないが、項目の数が10個、20個と増えるとどうなるかは容易に想像できるだろう。If文による分岐では煩雑になりすぎて、手に負えなくなるのは火を見るよりも明らかだ。

 実は、Visual Basic 2005では、「カルチャ」と呼ばれる言語や地域の設定を基に、利用するリソース・ファイルを切り替えることができる。イメージとしては、図7のような感じになる。


図7 カルチャを変更すると利用するリソース・ファイルが切り替えられる
国や言語を表すカルチャはプログラムの中で変更することもできるし、コントロール・パネルの国別設定でも変更できる。この方法だと、プログラムのコードを変更する必要がまったくない。

 カルチャの切り替えは、My.Application.ChangeUICultureというメソッドに、カルチャを表す文字列を指定する。カルチャを表す文字列は、“ja-JP”なら日本語、“en-US”なら英語(米国)、“en-GB”なら英語(英国)のように“言語-地域”の形式になっている。また、国や地域ではなく、言語のみに関連付けられているカルチャの場合は、“en”(=英語)のように表す。それ以外の言語や地域については、MSDN2ライブラリで、“CultureInfo”というキーワードを指定して検索すると、一覧を参照することができる。

 なお、空文字列(“”)を指定すると、特定のカルチャに依存しない設定と見なされ、通常、プロジェクトに組み込まれた既定のリソースが使われる。後述するが、今回のプログラムでも、日本語の場合は“ja-JP”を指定せずに、プロジェクトの既定のリソースを利用している。

 このようにして、リソース・ファイルを使い分けるには、既定のリソース・ファイル「Resources.resx」をコピーし、「Resources.カルチャ名.resx」という名前を付けておくだけでいい。

 例えば今回の例であれば、まず、図8のようにファイルをコピーして名前を変えておく。ただし、コピー元となるResources.resxファイルは、プロジェクトを保存しておかないと作成されないので、プロジェクトを保存してからファイルをコピーする。Resources.resxファイルが作られるフォルダはプロジェクトのフォルダのやや深いところにあるので、検索した方が素早く見つけられるだろう。


図8 ほかのカルチャのリソース・ファイルを作成する
リソース・ファイルを使い分けるには、既定のリソース・ファイル「Resources.resx」をコピーし、「Resources.カルチャ名.resx」という名前を付けておくだけでいい。
  エクスプローラに表示されたコピー元のリソース・ファイル。拡張子の.resxは表示されていない場合もある。
  Resources.resxファイルをコピーし、名前を「Resources.en.resx」に変更した。カルチャとして“en”を指定すれば、このリソース・ファイルが自動的に利用される。

 リソース・ファイルが作成できたら、[プロジェクト]−[既存項目の追加]を選択し、プロジェクトに読み込んでおく。図9のように、文字列リソースの値を変更しておけば、準備完了となる。


図9 ほかのカルチャの文字列リソースを編集する
  [プロジェクト]-[既存項目の追加]を選択し、Resources.en.resxファイルを指定すると、プロジェクトに読み込まれる。
  [デザイナの表示]ボタンをクリックすれば、 の画面が表示され、文字列リソースの値が編集できる。


 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