MultiRowのセルに入力された値のふりがなを取得することはできますか?
対象製品
InputMan for Windows Forms 8.0J
詳細
IMEコンポーネントのふりがな取得機能は、MultiRow for Windows Forms 7.0J/8.0Jのセルに対しても有効です。ReadingStringOutputクラスをセルに設定することで、セルに入力された漢字のふりがなを取得し別のセルに表示することができます。入力テキストの対応位置にふりがなを出力できる表示モードIntelligenceや、アルファベットのふりがな取得にも対応します。
なお、本機能はGcTextBox型とTextBox型セル(GcTextBoxCell/TextBoxCell)のみサポートされます。
下記のサンプルコードは、"TextBoxCell1"に入力されたふりがなを"TextBoxCell2"に表示する例です。表示モードはIntelligenceです。
※このサンプルコードを実行するには、フォームにあらかじめGcMultiRowコントロールとGcImeコンポーネントを配置します。
[Visual Basic]
なお、本機能は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; }