環境)
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); を記述してみましたが動作しませんでした。
よろしくお願いいたします。
なんか以前、同じ問題を解決した記憶があるんですが、
ちょっとテストアプリを作って見たんですが、現象が再現しないんですよね…
(何もしなくても最初からひらがな入力可能)
ですが、昔作ったアプリの中ではこんな感じで実装されてました。
uses imm
var
procedure TForm1.FormActivate(Sender: TObject);
var
hI: HIMC;
begin
hI := ImmGetContext(Handle);
ImmSetOpenStatus(hI,True);
ImmReleaseContext(Handle, hI);
end;
再現しないですね
漢字変換は何を使っていますか?
monaaさん、takeさん お返事ありがとうございます。
monaaさん)
ソースをそのまま埋め込んでみましたが、やはりIMEはひらがなになりませんでした。
takeさん)
漢字変換は、MS-IME(2007)を使っています。
monaaさんのところでは、そのコードで動作しているし、
takeさんのところでも現象が再現しない ということですので
もう一度新規のフォームを作って動作検証してみます。
解決しました。
みなさま、お時間を取らせてしまい申し訳ありませんでした。
原因は、DELPHIでも、IMEでもありませんでした。
開発&テストをリモートで行っていたことが原因でした。
ローカルへexeを持ってきて実行したところ、ちゃんとひらがなになりました。
開発中のexeも、テスト用のexeもOKでした。
(ふと魔がさしてローカルにexeをコピーしてみたのです、、、)
お騒がせしました。
ツイート | ![]() |