チェックボックスでIMEを制御するには?

解決


宜しくお願いします!  2003-06-01 00:27:11  No: 3655

下らない質問かもしれませんが済みません。
チェックボックスでIMEをOFFに出来ず、困っています。
色々と調べてみましたが、解決方法が見付かりません。

現在Delphi5Learningを使用し、領収書と伝票のデータを入力するプログラムを作成しています。
チェックボックスにフォーカスが来たら、チェックのON/OFFをスペースキーでも出来る仕様です。
チェックボックスは、フォーカスが来たら自動的にIMEもOFFになりますが、私のプログラムではIMEがONになってしまいます。
原因は、チェックボックスへフォーカスが来る前に、メモコンポーネントのImeModeが指定(imHira等)されているためでした。
これではマウスを使用しないと、チェックのON/OFFが出来ません。

どなたかチェックボックスでIMEを制御する方法を、存知ませんでしょうか?
はなはだ恐縮ではございますが、どうか宜しくお願いいたします。


にしの  2003-06-01 00:50:30  No: 3656

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でしょう。


Basser  2003-06-01 02:14:37  No: 3657

あまりおすすめはできないのですが
以下のような方法もあります。

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;


宜しくお願いします!  2003-06-01 02:54:35  No: 3658

にしの様、Basser様、ご親切にありがとうございます。
問題は、見事に解決いたしました。
本当にありがとうございます。

>IMEは何を使用していますか?
IMEは、Atok14とMS-IME2002です。
にしの様の教えて下さったHPを参考にコーディングしたところ、見事に理想的な動作になりました。
また、Delphi7にも移行したいと思います。

Basser様の方法も試してみましたが、正常に動作しました。
本当にありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加