先頭のコントロールに設定したImeModeが効かない

解決


ともとも  2013-08-06 02:04:55  No: 44986

環境)
OS:Windows7 Pro sp1
DELPHI:XE4 Enterprise Update1
VCL フォームアプリケーション

フォーム上に、
  TEdit(vcl.StdCtrl.TEdit)を2つとTButtonが配置されています。
  1つ目のTEdit(A)のIMEModeはimHiraに、
  2つ目のTEdit(B)のIMEModeはimCloseに設定しています。

生成されたexeを起動すると、
TEdit(A)にフォーカスがありますが、IMEはひらがなではありません。
一旦TEdit(B)へフォーカスを移動させてもう一度TEdit(A)へフォーカスを戻すとIMEはひらがなになります。
exe起動直後にTEdit(A)のIMEがひらがなになるようにするにはどうしたらよいでしょうか。

FormShow、FormActiveのイベントで
コントロールのフォーカスを移動させたり、
Self.SetIme;  や
SetIMEMode(TEdit(A), imHira);  を記述してみましたが動作しませんでした。

よろしくお願いいたします。


monaa  2013-08-10 00:19:15  No: 44987

なんか以前、同じ問題を解決した記憶があるんですが、
ちょっとテストアプリを作って見たんですが、現象が再現しないんですよね…
(何もしなくても最初からひらがな入力可能)
ですが、昔作ったアプリの中ではこんな感じで実装されてました。
uses imm

var
procedure TForm1.FormActivate(Sender: TObject);
var
  hI: HIMC;
begin
  hI := ImmGetContext(Handle);
  ImmSetOpenStatus(hI,True);
  ImmReleaseContext(Handle, hI);
end;


take  2013-08-10 00:35:38  No: 44988

再現しないですね
漢字変換は何を使っていますか?


ともとも  2013-08-10 01:32:39  No: 44989

monaaさん、takeさん  お返事ありがとうございます。

monaaさん)
ソースをそのまま埋め込んでみましたが、やはりIMEはひらがなになりませんでした。

takeさん)
漢字変換は、MS-IME(2007)を使っています。

monaaさんのところでは、そのコードで動作しているし、
takeさんのところでも現象が再現しない  ということですので
もう一度新規のフォームを作って動作検証してみます。


ともとも  2013-08-10 02:08:31  No: 44990

解決しました。
みなさま、お時間を取らせてしまい申し訳ありませんでした。

原因は、DELPHIでも、IMEでもありませんでした。
開発&テストをリモートで行っていたことが原因でした。
ローカルへexeを持ってきて実行したところ、ちゃんとひらがなになりました。
開発中のexeも、テスト用のexeもOKでした。
(ふと魔がさしてローカルにexeをコピーしてみたのです、、、)

お騒がせしました。


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

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






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