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;
おわかりの方いらっしゃいましたら、ご教授お願いします。
いまいち使い道がわかりませんが。
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;
もにゃさん
ありがとうございました。
解決いたしました。
タッチLCDで使用するスクリーンキーボードもどきを作成していました。
XPでは
[あ]→[い]→[う]とボタン押すと
「ああいああいう」と入りますが、VistaとXPで処理を分けてOKになりました。
とても助かりました。
解決マーク付け忘れましたー
ありがとうございました
ツイート | ![]() |