VB6(SP6),Windows98を使用しております。
簡単に出来そうな気がするのですが(気がするだけかも)、私の貧弱な頭ではどうしても実現出来ない機能がありまして、どなたか御教授頂けないでしょうか。
一つのフォームにText1及びText2とテキストボックスが2つありまして、Text1には漢字氏名を、Text2にはそのフリガナをリアルタイムに表示したいのです。
操作手順としましては、Text1に「やまだ」と入力し[変換]キーで「山田」と表示して[Enter]を押すと、「山田」が確定されてText1に表示されます。その時点([Enter]を押した時点)でText2に「ヤマダ」と表示させたいのです。
APIを使用すれば出来そうですが(但しまだ試してはいません)、もしAPIを使用せずに出来る方法もあれば、ぜひお知恵を頂きたいと思います。
(社内の顧客管理アプリケーションで使用します。現在は、フリガナ氏名をText1に入力し、Text2にフォーカスを移した時はそのフリガナをText2に表示させ、表示されたフリガナを[変換]キーで漢字変換するようになっています。社内の要望により実現する必要が出て来ました。何とかお助け下さいませ。)
予算があるのでしたら・・・
InputMan Pro Ver.6.5J
これ使えば一発です。
質問者です。
でヴぃけい様、早速のご回答ありがとうございます。
そんな便利な物があるとはビックリです。
ただ、恐らく会社からの予算は出ません(涙)。何せ、自分のパソコンもいまだにWin98のままレベルアップしてもらえていません。(そんなの当たり前?)
他の方法があれば、お教え頂けますよう何卒よろしくお願い致します。
InputMan Pro(今は 7.0Jですね)はPCDNで買えば約6万円ですね。
http://www.int21.co.jp/pcdn/index.html
http://www.int21.co.jp/pcdn/shop/
悩んでいる間に無駄に費やされる人件費(会社から見れば管理費なども含めると給料の倍以上)と比較すれば決して高い買い物ではないと思います。
とりあえず、お試し版で試してみてはいかがでしょうか?
http://www.grapecity.com/japan/support/database/P1_268.htm
http://www.grapecity.com/japan/support/database/P1_268_TrialVersions.htm#content
フリガナが欲しいなら ImmGetCompositionString
API だけどね。
そうですね・・・・
API以外だとExcel機能を利用するとか・・・・
かなり臭いやり方ですけど。
まあ、APIの方が無難だと思いますよ。
http://www.bcap.co.jp/hanafusa/VBHLP/excel08.htm
やはりAPIを使用するのが無難とおもいます。
そのつもりになられたら、
VB.NET用ですが以下も参考になるとおもいます。
http://www.bcap.co.jp/hanafusa/dotnet/ime01.htm
このページの終わりの方に
「VB6.0のNo.210のサンプルを.NET用に移植したものです。」
とも書いています。ちょっと私には見つけられなかったのですが
探せればずばり解決できるかもしれません。
またここを参考にVB6に移植も出来るでしょう。
その際API宣言部のInteger->Long等の変換も必要に
なりますが。
質問者です。
色々と貴重なご意見をありがとうございます。
総合的な経費を考えると、コンポーネントは購入するものだという考え方は個人的には正にその通りだと思いますが、会社の方針等諸事情がありまして、APIを使用して機能を実現する方向で行きます。(何とか出来ました。)
KeyCodeやKeyAsciiを利用する等して、漢字に変換する前のキーを憶えておきそれを再現させることで簡単に出来ないかと思ったんですが、むずかしいでしょうか?
>KeyCodeやKeyAsciiを利用する等して、漢字に変換する前のキーを憶えておきそれを再現させる
>ことで簡単に出来ないかと思ったんですが、むずかしいでしょうか?
それはVB側で KeyCode や KeyAscii を取得できるようなイベントを全て
コーディングしてテストしてみれば、ある程度予測がつく事だと思いますが、
自分ではテストできないほど高度なプログラミングでしたか?
KeyCodeやKeyAsciiを利用するのは、
難易度という意味ではたいしたこと無いでしょう。
ただし、少々面倒くさいですね。
APIもよいですが、御自身でメンテナンスできかねるものをコピペしても、
その場は凌げるかもしれないが、後々辛いかもしれませんので、
がんばって会得してくださいということで。
質問者です。書き込みが遅くなりまして申し訳ありません。
操作例を挙げますと、Text1に「山」と表示させる場合に入力するキーは、まず[Y][A][M][A]と4つのキーを押し「ヤマ」を表示させ、次に[変換]キーを押し、さらに[Enter]キーを押して確定することにより「山」と確定表示されます。(ローマ字入力の場合)
一応、KeyPressイベントでKeyAsciiを取得出来るのですが、[変換]キーを押さないと取得出来ない為、取得出来るKeyAsciiは-29102(山)となります。「ヤ」「マ」「ダ」のKeyAsciiを取得出来れば良いのですが‥。
出来ない場合は[Y][A][M][A]のKeyCode(それぞれ89,65,77,65)から入力したカタカナ(ヤマ)を割り出す方法になってしまうのでしょうか。もげ様がおっしゃった面倒くさいというのは、KeyCodeの組み合わせからカタカナを割り出すには、市販のコンポーネントを利用しないのであれば、自作関数を作成する等の必要がある為ということでしょうか。
>市販のコンポーネントを利用しないのであれば、
>自作関数を作成する等の必要がある為ということでしょうか。
答えは「Yes」じゃないの?
市販のコンポーネントを利用しないのであれば
フリーのサンプルや標準関数などを利用し、自作するしかない。
プログラミング全てにおいてそうだと思うけど?
この二つ以外の選択肢は例えば何があるの?
>この二つ以外の選択肢は例えば何があるの?
>いな さん
他作。自分以外の誰かに作ってもらう。そしてコピペ、これ最強!
質問者です。
まだ途中ですが、KeyCodeの組合せを元にして何とか出来そうです。
色々とアドバイスをありがとうございました。またよろしくお願い致します。
ツイート | ![]() |