掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TComboBoxのIME制御 (ID:46276)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TComboBoxのIME制御がうまくいきません。 環境:Win7 Pro & DelphiXE3 Update2 Form上にTEditを2つ、TComboBoxを1つ置き、FromのCreate時に procedure TForm1.FormCreate(Sender: TObject); begin Edit1.ImeMode := imHira; ComboBox1.ImeMode := imDisable; Edit2.ImeMode := imDisable; end; とIMEModeを設定しました。Tab順はEdit1,ComboBox1,Edit2の順です。 Edit1からComboBox1にFocusが移動しても、IMEがDisabeになりません。 ComboBox1からEdit2にFocusが移動すると、IMEはDisabeになります。 ComboBox1にFocusuがあるときに、半角キーを押すとDisableになります。 以前、TEditでも同様なことがあり、TEditのWMSetFocusでIME制御をかけて解決しました。 今回も、同様の解決方法で行おうとし、以下のコードを作成しました。 procedure TComboBox.WMSetFocus(var Message: TWMSetFocus); var Imc : HIMC; dwConversion : Cardinal; dwSentence : Cardinal; begin inherited; if ImeMode = imDisable then begin Imc := ImmGetContext(Handle); ImmGetConversionStatus(IMC, dwConversion, dwSentence); FKanaMode := (dwConversion or IME_CMODE_ALPHANUMERIC) <> 0; if FKanaMode then begin keybd_event(VK_KANA, 0, 0, 0); // 半角キー keybd_event(VK_KANA, 0, KEYEVENTF_KEYUP, 0); end; end; end; しかし、解決できませんでした。 ComboBoxは、Text部分とList部分から作られていると聞いています。 たぶんその関係だろうと想像はするのですが、私の理解力では解決できません。 解決のためのヒントをいただければ幸いです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.