連載:VB 6ユーザーのための
|
|
|
サンプル・プログラム9(後半) − ダイアログ・ボックスの設定により、利用するリソースを変える
後半では、[オプション]ダイアログ・ボックスを表示する必要があるので、プロジェクトに新しいフォームを追加しておく。
メニューから[プロジェクト]-[Windowsフォームの追加]を選択するか、[標準]ツールバーの左から3つ目のボタンの[▼]をクリックし、[Windowsフォームの追加]を選択しよう。すると、図5のようなダイアログ・ボックスが表示される。
ダイアログ・ボックスを作成するのであれば、テンプレートとして[Windowsフォーム]または[ダイアログ]を選択するとよい。[Windowsフォーム]の場合は、いわば白紙のフォームが新しく作られるが、[ダイアログ]の場合は、[OK]ボタンと[キャンセル]ボタンがあらかじめ配置されたフォームが作られる。また、それぞれのボタンをクリックしたときのイベント・ハンドラもあらかじめ作られている。
■追加したフォームのデザイン
では、ダイアログ・ボックスとして新しく作成したフォームにコントロールを配置し、プロパティを設定しておこう。図6と表2のように設定するといい。
ただし、[ダイアログ]を選択して作成したフォームの場合、FormBorderStyleプロパティやMaximizeBoxプロパティ、MinimizeBoxプロパティなどにはダイアログ・ボックスとして最適な値があらかじめ設定されている。それらのデフォルト値については表2には示していない。
図6 [オプション]ダイアログ・ボックスのデザイン | ||||||
図中の赤丸数字は次に示す表2の項目と対応している。
|
|
||||||||||||||||||||||||||||||||||||||||||
表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」という名前を付けておくだけでいい。
|
リソース・ファイルが作成できたら、[プロジェクト]−[既存項目の追加]を選択し、プロジェクトに読み込んでおく。図9のように、文字列リソースの値を変更しておけば、準備完了となる。
図9 ほかのカルチャの文字列リソースを編集する | ||||||
|
INDEX | ||
連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門 | ||
第7回 リソースを使ったマルチ・リンガルなVBアプリケーション | ||
1.サンプル・プログラム9(前半) − 文字列リソースの値を取得する | ||
2.サンプル・プログラム9(後半) − ダイアログの設定により、利用するリソースを変える | ||
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 -