IMEモードについて
CellStyle.ImeModeプロパティとCellStyle.ImeSentenceModeプロパティを使用すると、標準コントロールと同じ入力モードの設定に加えて、変換モードの設定を利用できます。
セルのIME入力モードは、CellStyle.ImeModeプロパティで設定します。
セルのIME変換モードは、CellStyle.ImeSentenceModeプロパティで設定します。
入力モード
セルは標準コントロールと同じIME入力モードをサポートしています。IME入力モードの設定値はSystem.Windows.Forms.ImeModeと同じです。たとえば、次のモードを使用できます。- ひらがな
- 全角カタカナ
- 全角英数
- 半角カタカナ
- 半角英数
セルのIME入力モードは、CellStyle.ImeModeプロパティで設定します。
GcMultiRow1.Rows(0).Cells(0).Style.ImeMode = ImeMode.Hiragana
gcMultiRow1.Rows[0].Cells[0].Style.ImeMode = ImeMode.Hiragana;
変換モード
変換モードは、IMEによって提供されるかな漢字変換の動作モードです。たとえば、変換時に文字列を人名・地名に優先的にマッチさせることができます。サポートされる変換モードは次のとおりです。- 一般
- 人名/地名
- 話し言葉優先
- 無変換
- 継承
- なし
セルのIME変換モードは、CellStyle.ImeSentenceModeプロパティで設定します。
Imports GrapeCity.Win.MultiRow
GcMultiRow1.Rows(0).Cells(0).Style.ImeMode = ImeMode.Hiragana
GcMultiRow1.Rows(0).Cells(0).Style.ImeSentenceMode = ImeSentenceMode.BiasForNames
using GrapeCity.Win.MultiRow;
gcMultiRow1.Rows[0].Cells[0].Style.ImeMode = ImeMode.Hiragana;
gcMultiRow1.Rows[0].Cells[0].Style.ImeSentenceMode = ImeSentenceMode.BiasForNames;
IMEモードとInputScopeプロパティ
Windows7以前のOSではIMEモードがスレッド単位で保持されていましたが、Windows 8以降ではユーザー単位で保持されるように仕様が変更されています。この変更によって、ImeModeプロパティによるIMEモードの切り替えが動作しない場合があります。
Windows 8以降の環境において、Windows 7以前のOSと同じようにIMEモードをスレッド単位で保持するには、以下の手順で「アプリ ウィンドウごとに異なる入力方式を設定する」の設定を変更します。
なお、InputScopeプロパティを使用することで上記の設定なしでWindows 7以前のOSと同じようにIMEモードを制御することができます。
Windows 8以降の環境において、Windows 7以前のOSと同じようにIMEモードをスレッド単位で保持するには、以下の手順で「アプリ ウィンドウごとに異なる入力方式を設定する」の設定を変更します。
- コントロールパネルを開き、「時計、言語、および地域」から「言語」-「詳細設定」をクリックします。
- 「入力方式の切り替え」グループの「アプリ ウィンドウごとに異なる入力方式を設定する」をオンにします。
- 「保存」ボタンをクリックして設定を有効にします。
なお、InputScopeプロパティを使用することで上記の設定なしでWindows 7以前のOSと同じようにIMEモードを制御することができます。
InputScope プロパティの使い方
CellStyle.InputScopeプロパティを使用すると、Windows 8以降の環境でも、Windows 7以前のOSと同じようにIMEモードを制御することができます。
MultiRowにおけるInputScopeプロパティとImeModeプロパティの挙動の差異は現在のところ確認されていませんが、InputScopeプロパティの動作はText Services FrameworkのSetInputScope関数に依存した動作となり、ImeModeプロパティとは異なる内部構造で動作するプロパティとなるため、Windows 8以降のOSにおいてIMEモードをWindows 7以前の動作と全く同じ挙動にしたい場合は、上記OSの設定値(「アプリ ウィンドウごとに異なる入力方式を設定する」)を変更することを推奨します。
ただし、セルにCellStyle.ImeModeプロパティとCellStyle.InputScopeプロパティの両方が変更されている場合、InputScopeプロパティの設定が優先されます。ImeModeプロパティの設定を優先したい場合は、InputScopeプロパティをDefaultに設定する必要があります。
次のコードでは、InputScopeプロパティを使用して、セルのIME入力モードを設定します。
MultiRowにおけるInputScopeプロパティとImeModeプロパティの挙動の差異は現在のところ確認されていませんが、InputScopeプロパティの動作はText Services FrameworkのSetInputScope関数に依存した動作となり、ImeModeプロパティとは異なる内部構造で動作するプロパティとなるため、Windows 8以降のOSにおいてIMEモードをWindows 7以前の動作と全く同じ挙動にしたい場合は、上記OSの設定値(「アプリ ウィンドウごとに異なる入力方式を設定する」)を変更することを推奨します。
ただし、セルにCellStyle.ImeModeプロパティとCellStyle.InputScopeプロパティの両方が変更されている場合、InputScopeプロパティの設定が優先されます。ImeModeプロパティの設定を優先したい場合は、InputScopeプロパティをDefaultに設定する必要があります。
次のコードでは、InputScopeプロパティを使用して、セルのIME入力モードを設定します。
GcMultiRow1.Rows(0).Cells(0).Style.InputScope = GrapeCity.Win.MultiRow.InputScopeNameValue.Hiraganas
gcMultiRow1.Rows[0].Cells[0].Style.InputScope = GrapeCity.Win.MultiRow.InputScopeNameValue.Hiragana;
|