喫茶XRAYトップページ

[スレッド全体
]

[447] フリカナ入力地獄返信 削除
2005/10/17 (月) 09:16:44 Syake
私事・私事・私事・私事・私事・私事・私事・私事

IMEの話で、そうそう・・と思ったのですが
現在、VB6アプリのメンテも平行してやってるわけですが・・・
これまた一般的では無い話で強縮です。

通常、人名入力は漢字名入力→フリカナ表示とやってるアプリが
多いような(「筆まめ」など)。
ところが、フリカナ入力→漢字名変換入力は少ないでしょう。
{フリカナEditに入力し「Enter」すると、漢字名Editにひらかなで
 変換待ちの状態で表示される。}

個人的にはこの仕様が好きです。
漢字名の下にフリカナがあるのは変。
かといって、漢字名の上にフリカナがあって、フリカナを修正する
場合に、一旦前のEditに戻ってという仕様も嫌い。
と、個人的こだわりなのですが、他のアプリ(Delphi)もそうしてま
す。(Delphiでこの仕様を実現するために苦労しましたが)
この場を借りて、皆様ありがとうございます。
//------------------------------------------------------
procedure TForm2.EditKanaKeyPress(Sender: TObject; var Key: Char);
var
   BufStrKana :String;
   Imc :HIMC;{usesにimmが必要}
begin
   if Key = Chr(VK_RETURN) then
   begin
      if (Trim((Sender as TEdit).Text) <> '') and (EditKanji.Text = '') then
      begin
     EditKanji.SetFocus;
         BufStrKana := (Sender as TEdit).Text;
         SetImeMode(EditKanji.Handle,imHira);
         Imc := ImmGetContext(EditKanji.Handle);
         ImmSetCompositionString(Imc,SCS_SETSTR,PChar(BufStrKana),Length(BufStrKana),nil,0);
      end else begin
     EditKanji.SetFocus;
      end;
   end;
end;
//------------------------------------------------------
・・・もし、この仕様を実現したい方がおられたら(いないか・・・)

ところで、VB6でこの仕様を「SendKeys」なるもので実現しています。
ところが、Win9X、2000では正常に動作するものの、WinXPしかも最近の
XPではかなりの確立(30件に1件)で化けます。
IMEのバージョンの関係かな?
フリカナ入力確定後、漢字名Editに、平かなが表示されないだけなら
まだしも(これも困るけど)、漢字名のところに「Xoあq Fdかp」など
とわけのわからん文字が変換前の状態で表示されたりします。
これには参ってます。
VB6アプリは俺が作ったわけではないし、何やってるのかわかんない箇
所が多いし、今更VB6で他の方法で実現させるのも面倒だし、できるか
どうかもわかんないし、サポートないし、デバックモードと実行モー
ドで動作違うし、VB6でこんなレベルが発生しても今更驚かんし、驚か
んし、驚かんし100乗。(^_^;)

や〜れ、そろそろ顧客も怒り出しそうだから、Delphiで作り直すかな。
んっ待てよ、これってMSIME以外でも正常なのかな(環境が無い・・・)


[449] Re:フリカナ入力地獄返信 削除
2005/10/17 (月) 19:52:09 Mr.XRAY
▼ Syakeさん

> 通常、人名入力は漢字名入力→フリカナ表示とやってるアプリが
> 多いような(「筆まめ」など)。


ですよね.
ない漢字だと,適当な連想で入力して変換すると,フリガナの修正が
必要です.

> ところが、フリカナ入力→漢字名変換入力は少ないでしょう。
> {フリカナEditに入力し「Enter」すると、漢字名Editにひらかなで
>  変換待ちの状態で表示される。}


コード実行してみました.いや,これいいですよ.はい !! パクリ.
逆転の発想ですね.う〜ん.なるほど.喫茶XRAYもためになるな.
思いつきませんでした.
確認環境 Delphi7 + WindowsXP + WXG4(IME)
このコードのimm関係のAPIは,どのIMEでも動作すると思います.



[▼次のスレッド]
INCM/CMT
Cyclamen v3.82