PowerTools InputMan for Windows Forms 8.0J > InputManの使い方 > IMEコンポーネント > ふりがなの取得 |
IMEコンポーネントによるふりがなの取得について解説します。
ふりがな取得機能は、MultiRow for Windows Forms およびSPREAD for Windows Forms の下記のセル型にも対応します。
|
IMEコンポーネントをフォームに配置すると、SetReadingStringOutput メソッドが入力コントロールのプロパティグリッドに「ReadingStringOutput プロパティ」として追加されます。
ReadingStringOutput プロパティでは、コントロールに入力された文字のふりがなを自動的に指定したコントロールへ表示することができます。
ふりがなの表示に必要な設定は、ReadingStringOutputプロパティが参照する、ReadingStringOutput クラスの以下のプロパティを使用します。
ふりがなの表示モードを設定するOutputMode プロパティに設定できる値は以下のとおりです。
OutputModeの値 | 説明 |
---|---|
Append | コントロールのテキストの末尾にふりがなを追加します。 |
Replace | コントロールのテキストに上書きしてふりがなを表示します。 |
Intelligence | コントロールのテキストに対応する位置にふりがなを表示します。文字を削除した場合には削除された文字に対応してふりがなも削除されます。 |
表示モードをIntelligenceに設定した場合は、以下の制限があります。
|
また、コードからふりがなの自動取得を設定するには、SetReadingStringOutput メソッド を使用します。
以下は、テキストコントロール(GcTextBox1)に入力された漢字のふりがなをテキストコントロール(GcTextBox2)に表示するように設定した例です。
Imports GrapeCity.Win.Editors GcIme1.SetReadingStringOutput(GcTextBox1, New ReadingStringOutput(GcTextBox2, ReadingStringOutputMode.Append))
using GrapeCity.Win.Editors; gcIme1.SetReadingStringOutput(gcTextBox1, new ReadingStringOutput(gcTextBox2, ReadingStringOutputMode.Append));
また、ReadingStringOutput プロパティを使わずに、GcIme オブジェクトのResultString イベントを使って、入力された漢字のふりがなを取得することもできます。コントロールが取得したふりがなは、ResultStringEventArgs 引数のReadString プロパティに渡されます。
ResultString イベントを発生させるには、コントロールのプロパティウィンドウに追加されたCausesImeEvent プロパティをTrue に設定するか、SetCausesImeEvent メソッドで設定します。
以下に、ふりがなを取得するサンプルコードを示します。フォームにIMEコンポーネント(GcIme1)、テキストコントロール(GcTextBox1)とラベルコントロール(Label1)が貼り付けられていることを前提にしています。
Imports GrapeCity.Win.Editors Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ResultStringイベントが発生するように設定します。 GcIme1.SetCausesImeEvent(GcTextBox1, True) End Sub Private Sub GcIme1_ResultString(ByVal sender As Object, ByVal e As GrapeCity.Win.Editors.ResultStringEventArgs) Handles GcIme1.ResultString ' ふりがなをラベルコントロールに表示します。 If e.SourceControl Is GcTextBox1 Then Label1.Text += e.ReadString End If End Sub
using GrapeCity.Win.Editors; private void Form1_Load(object sender, EventArgs e) { // ResultStringイベントが発生するように設定します。 gcIme1.SetCausesImeEvent(gcTextBox1, true); } private void gcIme1_ResultString(object sender, ResultStringEventArgs e) { // ふりがなをラベルコントロールに表示します。 if ( e.SourceControl == gcTextBox1) { label1.Text += e.ReadString; } }
IMEコンポーネントをフォームに配置すると、SetKanaMode メソッドが入力コントロールのプロパティウィンドウに「KanaMode プロパティ」として追加されます。
KanaMode プロパティでは、指定したコントロールへ出力されるふりがなの種類を選択設定することができます。
KanaModeの値 | 説明 |
---|---|
KatakanaHalf | 「半角カタカナ」で出力されます。 |
Katakana | 「全角カタカナ」で出力されます。 |
Hiragana | 「ひらがな」で出力されます。 |
GcIme クラスのConvert メソッドを利用することで、コードでかな漢字変換(IME)を実行できます。Convert メソッドの引数は、次のように設定します。
1. 変換後の文字列を表示するコントロールを指定する場合
第1引数:変換後の文字列を表示するコントロール 第2引数:変換する文字列(ひらがな、全角または半角のカタカナ) 第3引数:GrapeCity.Win.Editors.ConvertMode 型
2. 変換後の文字列を表示するコントロールを指定しない場合
第1引数:変換する文字列(ひらがな、全角または半角のカタカナ) 第2引数:GrapeCity.Win.Editors.ConvertMode 型
変換後の文字列を表示するコントロールを指定しない場合、フォーカスのあるコントロールのText プロパティに渡されます。
次のサンプルコードは、IMEを呼び出して、文字列を漢字に変換します。フォームにIMEコンポーネント(GcTextBox1)とボタンコントロール(Button1)が貼り付けられていることを前提にしています。ここでは、GcTextBoxコントロールにフォーカスを設定することで変換した文字列をコントロールに渡しています。
Imports GrapeCity.Win.Editors Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click GcTextBox1.Focus() GcTextBox1.ImeMode = ImeMode.On GrapeCity.Win.Editors.GcIme.Convert("あした", GrapeCity.Win.Editors.ConvertMode.FirstInCandidate) End Sub
using GrapeCity.Win.Editors; private void button1_Click(object sender, System.EventArgs e) { gcTextBox1.Focus(); gcTextBox1.ImeMode = ImeMode.On; GrapeCity.Win.Editors.GcIme.Convert("あした", GrapeCity.Win.Editors.ConvertMode.FirstInCandidate); }
GcIme クラスの次のメソッドを使用して、ふりがなから変換可能な漢字、漢字から読みがなを取得することができます。取得した漢字または読みがなは文字列リストとして、次のメソッドの戻り値に渡されます。
次のサンプルコードは、テキストコントロールに入力したふりがなから変換可能な漢字を取得しコンボコントロールのリストボックスに表示します。フォームにテキストコントロール(GcTextBox1)とコンボコントロール(GcComboBox1)が貼り付けられていることを前提にしています。
Imports GrapeCity.Win.Editors Private Sub GcTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GcTextBox1.TextChanged ' 変換可能な漢字のリストを配列で取得します。 Dim sl As String() = GrapeCity.Win.Editors.Ime.GetConversionList(GcTextBox1.Text) GcComboBox1.Items.Clear() ' ひとつずつコンボボックスに追加します。 For Each s As String In sl GcComboBox1.Items.Add(s) Next If sl.Length > 0 Then GcComboBox1.Text = sl(0) GcComboBox1.DroppedDown = True End If End Sub
using GrapeCity.Win.Editors; private void gcTextBox1_TextChanged(object sender, System.EventArgs e) { // 変換可能な漢字のリストを配列で取得します。 String[] sl = GrapeCity.Win.Editors.Ime.GetConversionList(gcTextBox1.Text); gcComboBox1.Items.Clear(); foreach(string s in sl) { gcComboBox1.Items.Add(s); } // ひとつずつコンボボックスに追加します。 if (sl.Length > 0) { gcComboBox1.Text = sl[0]; gcComboBox1.DroppedDown = true; } }
この機能は、IMEのバージョンにより結果が異なります。これは、IMEコンポーネントが内部で使用しているMicrosoft IME API(IFELanguage インターフェース)の動作によるものです。 |
ReadingStringOutput クラスのEnableAlphabetReadingMapping プロパティをTrue に設定すると、アルファベットからふりがなを取得できます。デフォルトでは次の表に従ってふりがなが取得されます。
アルファベット | ふりがな | アルファベット | ふりがな |
---|---|---|---|
A | エイ | N | エヌ |
B | ビー | O | オー |
C | シー | P | ピー |
D | ディー | Q | キュー |
E | イー | R | アール |
F | エフ | S | エス |
G | ジー | T | ティー |
H | エイチ | U | ユー |
I | アイ | V | ヴィー |
J | ジェイ | W | ダブリュー |
K | ケイ | X | エックス |
L | エル | Y | ワイ |
M | エム | Z | ゼット |
既定のふりがなを変更したいとき、また記号にふりがなを設定したい場合にはAlphabetReadingMapping クラスのAdd メソッドを利用して、ふりがなを変更したり追加することが可能です。
' [A]のふりがなを既定の「エイ」から「エー」に変更します。 GcIme1.AlphabetReadingMapping.Add(New GrapeCity.Win.Editors.AlphabetReadingMapEntry("A", "エー")) ' [@]に新しくふりがな「アット」を設定します。 GcIme1.AlphabetReadingMapping.Add(New GrapeCity.Win.Editors.AlphabetReadingMapEntry("@", "アット")) ' [1]に新しくふりがな「イチ」を設定します。 GcIme1.AlphabetReadingMapping.Add(New GrapeCity.Win.Editors.AlphabetReadingMapEntry("1", "イチ"))
// [A]のふりがなを既定の「エイ」から「エー」に変更します。 gcIme1.AlphabetReadingMapping.Add(new GrapeCity.Win.Editors.AlphabetReadingMapEntry('A', "エー")); // [@]に新しくふりがな「アット」を設定します。 gcIme1.AlphabetReadingMapping.Add(new GrapeCity.Win.Editors.AlphabetReadingMapEntry('@', "アット")); // [1]に新しくふりがな「イチ」を設定します。 gcIme1.AlphabetReadingMapping.Add(new GrapeCity.Win.Editors.AlphabetReadingMapEntry('1', "イチ"));
|