MESCIUS SPREAD for Windows Forms 17.0J
IMEモードの切り替え

IMEモードを切り替える方法について解説します。

IMEモードについて

コントロール、行、列、セルで設定できるImeModeプロパティとImeSentenceModeプロパティを使用すると、標準コントロールと同じ入力モードの設定に加えて、変換モードの設定を利用できます。

入力モード

コントロール、行、列、セルのImeMode プロパティは標準コントロールと同じ IME 入力モードをサポートしています。IME 入力モードの設定値は System.Windows.Forms.ImeMode と同じです。たとえば、次のモードを使用できます。

IME 入力モードは、ImeModeプロパティで設定します。

サンプルコード

次のサンプルコードは2行2列目のセルのImeModeプロパティを設定します。

C#
コードのコピー
fpSpread1.ActiveSheet.Cells[1, 1].ImeMode = System.Windows.Forms.ImeMode.Hiragana;
Visual Basic
コードのコピー
FpSpread1.ActiveSheet.Cells(1, 1).ImeMode = Windows.Forms.ImeMode.Hiragana

変換モード

変換モードは、IME によって提供されるかな漢字変換の動作モードです。たとえば、変換時に文字列を人名・地名に優先的にマッチさせることができます。サポートされる変換モードは次のとおりです。

IME 変換モードは、ImeSentenceModeプロパティで設定します。

サンプルコード

次のサンプルコードは2行2列目のセルのImeSentenceModeプロパティを設定します。

C#
コードのコピー
fpSpread1.ActiveSheet.Cells[1, 1].ImeMode = System.Windows.Forms.ImeMode.Hiragana
fpSpread1.ActiveSheet.Cells[1, 1].ImeSentenceMode = FarPoint.Win.ImeSentenceMode.BiasForNames;
Visual Basic
コードのコピー
FpSpread1.ActiveSheet.Cells(1, 1).ImeMode = Windows.Forms.ImeMode.Hiragana
FpSpread1.ActiveSheet.Cells(1, 1).ImeSentenceMode = FarPoint.Win.ImeSentenceMode.BiasForNames

IMEモードとInputScopeプロパティ

Windows 7以前のOSではIMEモードがスレッド単位で保持されていましたが、Windows 8やWindows Server 2012ではユーザー単位で保持されるように仕様が変更されています。この変更によって、ImeMode プロパティによるIMEモードの切り替えが動作しない場合があります。

Windows 8やWindows Server 2012環境において、Windows 7以前のOSと同じようにIMEモードをスレッド単位で保持するには、以下の手順で「アプリ ウィンドウごとに異なる入力方式を設定する」の設定を変更します。

  1. コントロールパネルを開き、「時計、言語、および地域」から「言語」-「詳細設定」をクリックします。
  2. 「入力方式の切り替え」グループの「アプリ ウィンドウごとに異なる入力方式を設定する」をオンにします。
  3. 「保存」ボタンをクリックして設定を有効にします。

コントロール、行、列、セルのInputScopeプロパティを使用することで上記の設定なしでWindows 7以前のOSと同じようにIMEモードを制御することができます。

InputScopeプロパティの使い方

コントロール、行、列、セルのInputScopeプロパティ を使用すると、Windows 8やWindows Server 2012環境でも、Windows 7以前のOSと同じように IMEモードを制御することができます。
SPREADにおけるInputScopeプロパティとImeModeプロパティの挙動の差異は現在のところ確認されていませんが、InputScopeプロパティの動作は Text Services FrameworkのSetInputScope関数に依存した動作となり、ImeModeプロパティとは異なる内部構造で動作するプロパティとなるため、Windows 8以降のOSにおいてIMEモードをWindows 7以前の動作とまったく同じ挙動にしたい場合は、上記OSの設定値(「アプリウィンドウごとに異なる入力方式を設定する」)を変更することを推奨します。

ただし、ImeModeプロパティとInputScopeプロパティの両方が変更されている場合、InputScopeプロパティの設定が優先されます。ImeModeプロパティの設定を優先したい場合は、InputScopeプロパティを Default に設定する必要があります。

次のコードでは、InputScopeプロパティを使用して、セルのIME 入力モードを設定します。

サンプルコード

C#
コードのコピー
fpSpread1.ActiveSheet.Cells[1, 1].InputScope = FarPoint.Win.InputScopeNameValue.Hiragana;
Visual Basic
コードのコピー
FpSpread1.ActiveSheet.Cells(1, 1).InputScope = FarPoint.Win.InputScopeNameValue.Hiragana
  • InputScope プロパティはタッチ キーボードに影響します。たとえば InputScope プロパティでIMEモードを全角英数にしたとき、タッチ キーボードを表示するとそのキーボード レイアウトが英数になります。
  • InputScope プロパティで全角カタカナ、半角カタカナおよび全角英数を使用するとき、タッチ キーボードにはこれらに対応するレイアウトが提供されないため、タッチ キーボードのレイアウトは切り替わりません。タッチキーボードからこれらの文字を入力する場合には変換候補から選択して入力します。
  • InputScope プロパティの動作は Text Services Framework の SetInputScope関数に依存しています。
参照

 

 


© MESCIUS inc. All rights reserved.