MESCIUS InputMan for Windows Forms 12.0J
ふりがなの取得

IMEコンポーネントによるふりがなの取得について解説します。

ふりがな取得機能は、MultiRow for Windows Forms およびSPREAD for Windows Forms の下記のセル型にも対応します。

  • MultiRow:TextBoxCell、GcTextBoxCell
  • SPREAD:GcTextBoxCellType
ふりがなの自動取得

IMEコンポーネントをフォームに配置すると、SetReadingStringOutput メソッドが入力コントロールのプロパティグリッドに「ReadingStringOutput プロパティ」として追加されます。

ReadingStringOutput プロパティでは、コントロールに入力された文字のふりがなを自動的に指定したコントロールへ表示することができます。

ふりがなの表示に必要な設定は、ReadingStringOutputプロパティが参照する、ReadingStringOutput クラスの以下のプロパティを使用します。

ふりがなの表示モードを設定するOutputMode プロパティに設定できる値は以下のとおりです。

OutputModeの値 説明
Append コントロールのテキストの末尾にふりがなを追加します。
Replace コントロールのテキストに上書きしてふりがなを表示します。
Intelligence コントロールのテキストに対応する位置にふりがなを表示します。文字を削除した場合には削除された文字に対応してふりがなも削除されます。

表示モードをIntelligenceに設定した場合は、以下の制限があります。

  • ふりがなは削除された文字に対応するように再変換が行われますが、文字によっては異なるふりがなに変換される場合があります。
  • Intelligenceに対応しているコントロールは以下の4つのみです。
    • GcTextBox
    • GcRichTextBox
    • TextBox
    • RichTextBox

また、コードからふりがなの自動取得を設定するには、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', "イチ"));

  • アルファベットの大文字、小文字、全角、半角は区別されません。
  • 同じ文字に対して複数のふりがなを設定した場合、最後の設定が有効となります。
  • ふりがなを設定できるのは、アルファベット、記号、数字です。かなや漢字にふりがなを設定した場合の動作は保証できません。
  • IMEモードがオフのときにアルファベットのふりがな取得を有効にする場合は、OutputMode プロパティをIntelligence に設定する必要があります。
関連トピック

 

 


© MESCIUS inc. All rights reserved.