Vistaでスクリーンキーを使ったIME制御で不具合

解決


manta  2008-05-19 18:46:00  No: 30729

Delphi2007でVista

五十音キーのボタンを作成しEdit1に漢字時入力をしていますが、XPでは正常に動作しましがVistaでは、[き][ょ][う]キーを処理しても最後に入力した文字[う]のみが表示され前に入力した[き][ょ]はなくなってしまい入力できません。

XP
きょう
~~~~~~
VISTA

~~
procedure TForm1.SpeedButton1Click(Sender: TObject);
/*五十音キーボードのイベント*/
begin
    SetCharToEdit(TSpeedButton(Sender).Caption);
end;

procedure TForm1.SetCharToEdit(Buf: String);
begin
     Edit1.SetFocus;
     IMC:=ImmGetContext(Edit1.Handle);
     BufLen:=length(Buf);
     ImmSetCompositionString(IMC,SCS_SETSTR, PChar(Buf),BufLen, nil, 0);
     ImmReleaseContext(Edit1.Handle,IMC);
end;

おわかりの方いらっしゃいましたら、ご教授お願いします。


もにゃ  2008-05-20 03:55:08  No: 30730

いまいち使い道がわかりませんが。

procedure TForm1.SetCharToEdit(Buf: String);
var
  IMC: HIMC;
  BufLen:Integer;
  bSize:Integer;
  Buf2:String;
begin
  IMC:=ImmGetContext(Edit1.Handle);
  SetLength(Buf2,255);
  bSize:= ImmGetCompositionString(IMC,GCS_COMPSTR,PChar(Buf2),255);
  SetLength(Buf2,bSize);
  Buf:=Buf2 + Buf;
  BufLen:=length(Buf);
  ImmSetCompositionString(IMC,SCS_SETSTR, PChar(Buf),BufLen, nil, 0);
  ImmReleaseContext(Edit1.Handle,IMC);
end;


manta  2008-05-20 17:51:32  No: 30731

もにゃさん
ありがとうございました。
解決いたしました。

タッチLCDで使用するスクリーンキーボードもどきを作成していました。

XPでは
[あ]→[い]→[う]とボタン押すと
「ああいああいう」と入りますが、VistaとXPで処理を分けてOKになりました。

とても助かりました。


manta  2008-05-21 02:07:47  No: 30732

解決マーク付け忘れましたー
ありがとうございました


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

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






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