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

解決


ともとも  2013-08-05 17:04:55  No: 44986  IP: 192.*.*.*

環境)
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-09 15:19:15  No: 44987  IP: 192.*.*.*

なんか以前、同じ問題を解決した記憶があるんですが、
ちょっとテストアプリを作って見たんですが、現象が再現しないんですよね…
(何もしなくても最初からひらがな入力可能)
ですが、昔作ったアプリの中ではこんな感じで実装されてました。
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-09 15:35:38  No: 44988  IP: 192.*.*.*

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

編集 削除
ともとも  2013-08-09 16:32:39  No: 44989  IP: 192.*.*.*

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

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

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

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

編集 削除
ともとも  2013-08-09 17:08:31  No: 44990  IP: 192.*.*.*

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

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

お騒がせしました。

編集 削除