VB.NETはじめる(その3)

更新日:2002/10/1

ひらがなをローマ字に変換

3.1 ひらがなローマ字変換

 全角ひらがなの文字列を半角のローマ字に変換するフォームを作る。
 骨子となる変換関数については、すでにExcel2000のVBA用に作成済みである。
 これを利用する。
 ただし、前項に書いたようにVBAとVB.NETでは、一部の文法が異なる。
 その部分だけを変更することとした。

3.2 フォームの設計

 下図のように入力文字列を入れるテキストボックスと変換した結果を表示するテキストボックスを
 用意する。前者は、プロパティウインドウでIMEモードをひらがなモードにしておく。
 また、後者は、読み込み専用にしておく。表示するためであれば、ラベルにしてもよいが、テキストボックスであれば、マウスでコピー&ペーストが可能になる。ラベルではできない。
 テキストボックスは、そのプロパティのうち、特に「ScrolBar」をVerticalに、「Multiline」をTrueにすれば、複数行にまたがる文字列を入力、また、表示できる。
 次にラジオボタンを2つ配置する。それぞれ関数の引数、すなわち、大文字・小文字の別、冗長なnの抑制に対応する。
 最後に、変換ボタン、リセットボタンと閉じるボタンの3つを配置する。

3.3 イベントプロシージャ

 簡単なのは、閉じるボタンに対応するものである。命令は、「Close()」のみとなる。
 次にリセットボタンを押した場合のイベントプロシージャを作成する。これは、2つのテキストボックスをクリアする命令とフォーカスをテキストボックス1に戻す命令が必要である。
 これは、TextBox1.text=space(0)、TextBox2.Text=space(0)、そして、TextBox2.Focus()という命令で満たされる。
 最後に変換ボタンを押した場合のイベントプロシージャである。実際、これが本命であるが、
 次のようになる。
 ---------ここから---------
 Dim str1, str2 As String
 Dim n As Short
 
 str1 = TextBox1.Text
 If CheckBox1.Checked = True Then
   str2 = "L" ' 大文字の場合
  Else
   str2 = ""
 End If
 If CheckBox2.Checked = True Then
   n = 1    ' nを重複を省く場合
 Else
   n = 0
 End If
 TextBox2.Text = Hiraroma(str1, str2, n)
 --------ここまで-----------
 ここで、Hiraroma()というのが、変換関数の呼び出しである。
 str1は、変換元の文字列、str2は、大文字に変換したい場合は、Lとなる。
 nは、冗長なnを抑制する場合は、1とする。

3.4 モジュール

 変換関数を定義する場所がまず、問題になる。
 フォームの中で定義するのは、おかしいので、モジュールを挿入する。
 モジュールは、プロジェクトメニューからコンポーネントの追加を選択して、モジュールの追加をクリックする。
新規に挿入されたモジュールは、「Module1.vb」という名称になる。
 そして、モジュールに変換関数を挿入するために、モジュール内にカーソルを置き、編集からテキストファイルの挿入を選択し、「ローマ字変換.BAS」を指定した。

3.5 モジュールの変更点

 1.宣言部
   モジュール内で共通に使用する変数をPrivateで宣言した。VBAの場合は、Publicであった。
 2.変数定義
   IntegerをShortに変更した。
 3.関数定義
   モジュール内のサブルーチン的関数3つをPrivateで宣言した。主関数である「Hiraroma()」は、
   何も付けずに宣言している。
   このようにするとフォームからは、主関数しか参照できなくなる。

3.6 実行して確認

 下記のように実行して確認後、ビルドした。
 今回作成したHiraroma1.exeは、「自作もの」に追加してある。Form1.vbとModule1.vbを同梱。
 ただし、実行には、.NetFrameworkがインストールされている環境が必要なことに注意してほしい。

VB.NETはじめるに戻る