下らない質問かもしれませんが済みません。
チェックボックスでIMEをOFFに出来ず、困っています。
色々と調べてみましたが、解決方法が見付かりません。
現在Delphi5Learningを使用し、領収書と伝票のデータを入力するプログラムを作成しています。
チェックボックスにフォーカスが来たら、チェックのON/OFFをスペースキーでも出来る仕様です。
チェックボックスは、フォーカスが来たら自動的にIMEもOFFになりますが、私のプログラムではIMEがONになってしまいます。
原因は、チェックボックスへフォーカスが来る前に、メモコンポーネントのImeModeが指定(imHira等)されているためでした。
これではマウスを使用しないと、チェックのON/OFFが出来ません。
どなたかチェックボックスでIMEを制御する方法を、存知ませんでしょうか?
はなはだ恐縮ではございますが、どうか宜しくお願いいたします。
IMEは何を使用していますか?
こちらでは再現できませんでした。
# Delphi7Professional+ATOK16
それともDelphi7と5の違いでしょうか。
http://hp.vector.co.jp/authors/VA015730/delphi/TipsTips.html
ここのIMEのOn/Offなどが参考になると思います。
CheckBoxのOnEnter時に、Offにしてしまえばよいはずなので。
これでMemoに入ったときOnにならなければ、MemoのOnEnterでOnにする記述をすればOKでしょう。
あまりおすすめはできないのですが
以下のような方法もあります。
implementation
{$R *.DFM}
type
TCheckBoxEx = class(TCheckBox)
public
property ImeMode; // protectedの ImeMode をpublic に移します
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TCheckBoxEx(CheckBox1).ImeMode:= imDisable;
// 宣言したTCheckBoxExクラスに型キャストすることで
// ImeModeプロパティにアクセスできます
end;
にしの様、Basser様、ご親切にありがとうございます。
問題は、見事に解決いたしました。
本当にありがとうございます。
>IMEは何を使用していますか?
IMEは、Atok14とMS-IME2002です。
にしの様の教えて下さったHPを参考にコーディングしたところ、見事に理想的な動作になりました。
また、Delphi7にも移行したいと思います。
Basser様の方法も試してみましたが、正常に動作しました。
本当にありがとうございます。
ツイート | ![]() |