MultiRowのセルに入力された値のふりがなを取得することはできますか?

文書番号 : 40998     文書種別 : 使用方法     登録日 : 2017/08/25     最終更新日 : 2017/08/25
文書を印刷する
対象製品
InputMan for Windows Forms 10.0J
詳細
IMEコンポーネントのふりがな取得機能は、MultiRow for Windows Forms 7.0J/8.0J/10.0Jのセルに対しても有効です。ReadingStringOutputクラスをセルに設定することで、セルに入力された漢字のふりがなを取得し別のセルに表示することができます。入力テキストの対応位置にふりがなを出力できる表示モードIntelligenceや、アルファベットのふりがな取得にも対応します。

なお、本機能はGcTextBox型とTextBox型セル(GcTextBoxCell/TextBoxCell)のみサポートされます。

下記のサンプルコードは、"TextBoxCell1"に入力されたふりがなを"TextBoxCell2"に表示する例です。表示モードはIntelligenceです。
※このサンプルコードを実行するには、フォームにあらかじめGcMultiRowコントロールとGcImeコンポーネントを配置します。

[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports GrapeCity.Win.Editors

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim textBoxCell1 As New TextBoxCell()
    textBoxCell1.Name = "TextBoxCell1"
    Dim textBoxCell2 As New TextBoxCell()
    textBoxCell2.Name = "TextBoxCell2"

    GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {textBoxCell1, textBoxCell2})
End Sub

Private Sub GcMultiRow1_EditingControlShowing(sender As Object, e As EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
    If GcMultiRow1.CurrentCell.Name = "TextBoxCell1" Then
        ' GcImeコンポーネントとTextBoxCellの編集用コントロールを関連付け
        GcIme1.SetKanaMode(e.Control, KanaMode.Hiragana)
        GcIme1.SetReadingStringOutput(e.Control, New ReadingStringOutput(GcMultiRow1.CurrentRow("TextBoxCell2"), ReadingStringOutputMode.Intelligence))
        _lastEditingMRCell = e.Control
    End If
End Sub

Private Sub GcMultiRow1_CellEndEdit(sender As Object, e As CellEndEditEventArgs) Handles GcMultiRow1.CellEndEdit
    If e.EditCanceled Then
        ' Escキーにより編集がキャンセルされた場合の処理
        If GcMultiRow1.CurrentCell.Value Is Nothing Then
            _lastEditingMRCell.Text = String.Empty
        Else
            _lastEditingMRCell.Text = GcMultiRow1.CurrentCell.Value.ToString()
        End If
    End If
    ' GcImeコンポーネントの関連付けを解除
    GcIme1.ResetReadingStringOutput(_lastEditingMRCell)
    _lastEditingMRCell = Nothing
End Sub
[C#]
using GrapeCity.Win.Editors;
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
    var TextBoxCell1 = new TextBoxCell();
    TextBoxCell1.Name = "TextBoxCell1";

    var TextBoxCell2 = new TextBoxCell();
    TextBoxCell2.Name = "TextBoxCell2";

    gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { TextBoxCell1, TextBoxCell2 });

    gcMultiRow1.EditingControlShowing += gcMultiRow1_EditingControlShowing;
    gcMultiRow1.CellEndEdit += gcMultiRow1_CellEndEdit;
}

void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
{
    if (gcMultiRow1.CurrentCell.Name == "TextBoxCell1")
    {
        // GcImeコンポーネントとTextBoxCellの編集用コントロールを関連付け
        gcIme1.SetKanaMode(e.Control, KanaMode.Hiragana);
        gcIme1.SetReadingStringOutput(e.Control, new ReadingStringOutput(gcMultiRow1.CurrentRow["TextBoxCell2"], ReadingStringOutputMode.Intelligence));
        _lastEditingMRCell = e.Control;
    }
}

private void gcMultiRow1_CellEndEdit(object sender, CellEndEditEventArgs e)
{
    if (e.EditCanceled)
    {
        //  Escキーにより編集がキャンセルされた場合の処理
        if (gcMultiRow1.CurrentCell.Value == null)
        {
            _lastEditingMRCell.Text = string.Empty;
        }
        else
        {
            _lastEditingMRCell.Text = gcMultiRow1.CurrentCell.Value.ToString();
        }
    }
    // GcImeコンポーネントの関連付けを解除
    gcIme1.ResetReadingStringOutput(_lastEditingMRCell);
    _lastEditingMRCell = null;
}


関連情報