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

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

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

下記のサンプルコードは、インデックス0の列のセルに入力された漢字のふりがなを、インデックス1の列のセルに表示する例です。表示モードはIntelligenceです。
※このサンプルコードを実行するには、フォームにあらかじめSPREADとGcImeコンポーネントを配置します。

[Visual Basic]
Imports GrapeCity.Win.Editors

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim textCell As New GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType()
    FpSpread1.ActiveSheet.Columns(0).CellType = textCell
End Sub

Private Sub FpSpread1_EditModeOn(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOn
    ' インデックス0の列に入力された漢字のふりがなをインデックス1の列に表示
    If FpSpread1.ActiveSheet.ActiveColumnIndex = 0 Then
        FpSpread1.ActiveSheet.ActiveCell.Tag = FpSpread1.ActiveSheet.ActiveCell.Text
        ' GcImeコンポーネントとGcTextBoxCellTypeの編集用コントロールを関連付け
        Dim editor = FpSpread1.EditingControl
        GcIme1.SetKanaMode(editor, KanaMode.KatakanaHalf)
        GcIme1.SetReadingStringOutput(editor, New ReadingStringOutput(FpSpread1.ActiveSheet.Cells(FpSpread1.ActiveSheet.ActiveRowIndex, 1), ReadingStringOutputMode.Intelligence))
    End If
End Sub

Private Sub FpSpread1_EditModeOff(sender As Object, e As EventArgs) Handles FpSpread1.EditModeOff
    If FpSpread1.ActiveSheet.ActiveCell.Column.Index = 0 Then
        ' Escキーにより編集がキャンセルされた場合の処理
        If FpSpread1.ActiveSheet.ActiveCell.Text = FpSpread1.ActiveSheet.ActiveCell.Tag.ToString() Then
            FpSpread1.EditingControl.Text = FpSpread1.ActiveSheet.ActiveCell.Tag.ToString()
        End If
        ' GcImeのコンポーネントの関連付けを解除
        GcIme1.ResetReadingStringOutput(FpSpread1.EditingControl)
    End If
End Sub
[C#]
using GrapeCity.Win.Editors;

private void Form1_Load(object sender, EventArgs e)
{
    var gcTextBoxCell = new GrapeCity.Win.Spread.InputMan.CellType.GcTextBoxCellType();
    fpSpread1.ActiveSheet.Columns[0].CellType = gcTextBoxCell;
    
    fpSpread1.EditModeOn += fpSpread1_EditModeOn;
    fpSpread1.EditModeOff += fpSpread1_EditModeOff;
}

void fpSpread1_EditModeOn(object sender, EventArgs e)
{
    // インデックス0の列に入力された漢字のふりがなをインデックス1の列に表示
    if (fpSpread1.ActiveSheet.ActiveColumnIndex == 0)
    {
        fpSpread1.ActiveSheet.ActiveCell.Tag = fpSpread1.ActiveSheet.ActiveCell.Text;
        // GcImeコンポーネントとGcTextBoxCellTypeの編集用コントロールを関連付け
        var editor = fpSpread1.EditingControl;
        gcIme1.SetKanaMode(editor, KanaMode.KatakanaHalf);
        gcIme1.SetReadingStringOutput(editor, new ReadingStringOutput(fpSpread1.ActiveSheet.Cells[fpSpread1.ActiveSheet.ActiveRowIndex, 1], ReadingStringOutputMode.Intelligence));
    }
}

void fpSpread1_EditModeOff(object sender, EventArgs e)
{
    if (fpSpread1.ActiveSheet.ActiveCell.Column.Index == 0)
    {
        // Escキーにより編集がキャンセルされた場合の処理
        if (fpSpread1.ActiveSheet.ActiveCell.Text == fpSpread1.ActiveSheet.ActiveCell.Tag.ToString())
        {
            fpSpread1.EditingControl.Text = fpSpread1.ActiveSheet.ActiveCell.Tag.ToString();
        }
        // GcImeのコンポーネントの関連付けを解除
        gcIme1.ResetReadingStringOutput(fpSpread1.EditingControl);
    }
}
関連情報