川上です
連投になりますが、お知恵を拝借したく ^^;
フォーム上でF7を画面の移動に割り当ててるんですが、(これは変えたくない)
カナ変換しようとすると画面が切り替わってしまうため、変換中の場合は
F7での画面移動を無効にする方法を探しています。
とりあえず変換中の状態を取得しようとこちら↓を参考にコードを書いてみたの
ですが
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=072207
現在フォームにはTEditが無数に(10~100くらい)あるため、
それぞれに対して
OriginalProc := Memo1.WindowProc;
Memo1.WindowProc := MemoSubclassProc;
のようなコードをかかずにできないか、と考えています。
配列を使おうとしましたが、
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
setlength(OriginalProc,ComponentCount);
for i := 0 to ComponentCount-1 do begin
if(Components[i] is TEdit) then begin
x:=i;
OriginalProc[i] := TEdit(Components[i]).windowProc;
TEdit(Components[i]).WindowProc := SubclassProc;
end;
end;
KeyPreview:=True;
end;
procedure TForm1.SubclassProc(var Msg: TMessage);
begin
case Msg.Msg of
WM_IME_ENDCOMPOSITION:begin
label1.Caption:= '1';
end;
WM_IME_COMPOSITION:begin
label1.Caption:= '0';
end;
end;
OriginalProc[x](Msg); // 多分ここが正しくない
end;
のxところで躓いてしまいました。(OS機能呼び出しの失敗)
よろしくお願いします。
MLホームページ:
http://www.freeml.com/delphi-users
----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=j2fDE
------------------------------------------------------[freeml byGMO]--