[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/07/27(Fri) 11:39
投稿者名:3時間放置のポテチ
Eメール:
URL :
タイトル:
ふりがなの取得の仕方って?
現在登録者メンテナンスの課題プログラムをやっているのですが、
テキストボックスで"氏名(漢字)"(以下:漢)と"氏名(カナ)"(以下:カナ)があるのですが、(漢)の所にはもちろん漢字が入ってくるじゃないですか?
問題は、(カナ)に漢字のフリガナを自動で入力したいのですが、どのようなやり方がいいのでしょうか?
VB.6.0です

投稿時間:2007/07/27(Fri) 12:00
投稿者名:かさのば
Eメール:
URL :
タイトル:
Re: ふりがなの取得の仕方って?
Excelの機能を利用した方法でしたら
このページにサンプルがありますよ。

他にもImmGetCompositionString()APIを利用する方法があります。

投稿時間:2007/07/27(Fri) 13:39
投稿者名:3時間放置のポテチ
Eメール:
URL :
タイトル:
Re^2: ふりがなの取得の仕方って?
> Excelの機能を利用した方法でしたら
> このページにサンプルがありますよ。
できれば今回はExcelを使わない方法でやりたいです。

あと、(漢)の入力時に押されたキーコードを一時的にどこかに保存しておき、
フォーカスが(カナ)に移った時に保存されたキーコードを実行して文字を入力する。
といった方法は可能でしょうか?
もし可能ならこの方法でやりたいのですが・・・

> 他にもImmGetCompositionString()APIを利用する方法があります。
ヘルプのほうでImmGetCompositionStringで探すと英文のヘルプしかないので理解不可でした。
恐縮ですがどのような機能か教えてください。

投稿時間:2007/07/27(Fri) 13:58
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re^3: ふりがなの取得の仕方って?
> > 他にもImmGetCompositionString()APIを利用する方法があります。
> ヘルプのほうでImmGetCompositionStringで探すと英文のヘルプしかないので理解不可でした。
> 恐縮ですがどのような機能か教えてください。

ついでにGoogleでも検索するとよかったですね。
サンプル
http://www.winapi-database.com/tips/15/

投稿時間:2007/07/27(Fri) 15:12
投稿者名:3時間放置のポテチ
Eメール:
URL :
タイトル:
Re^4: ふりがなの取得の仕方って?
> ついでにGoogleでも検索するとよかったですね。
> サンプル
> http://www.winapi-database.com/tips/15/

よねKENさんサンプルの情報ありがとうございます。
しかしながら、このサンプルだと姓と名の間にスペースを入れる表記だと、
先に入れた読み仮名が消えてしまうので採用できない状態です。
# "浦島太郎"だと"ウラシマタロウ"という風に出るのですが、
# "浦島 太郎"と間にスペース(全角・半角どちらでも)を入れると"タロウ" となってしまいます。
# "浦島太郎"と入れて"浦島 太郎"と間にスペースを入れると" "と更に惨劇に・・・
# できることなら"浦島 太郎"と入れると"ウラシマ タロウ"と出したいのです。

投稿時間:2007/07/27(Fri) 15:49
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re^5: ふりがなの取得の仕方って?
> > ついでにGoogleでも検索するとよかったですね。
> > サンプル
> > http://www.winapi-database.com/tips/15/
>
> よねKENさんサンプルの情報ありがとうございます。
> しかしながら、このサンプルだと姓と名の間にスペースを入れる表記だと、
> 先に入れた読み仮名が消えてしまうので採用できない状態です。

あくまでサンプルですから、何も手を加えずに3時間放置のポテチさん
の期待する結果になるとは限りません。その辺は工夫が必要でしょう。
まずサンプルを動かせてどのように処理されているのかを分析しましょう。

> # "浦島太郎"だと"ウラシマタロウ"という風に出るのですが、
> # "浦島 太郎"と間にスペース(全角・半角どちらでも)を入れると"タロウ" となってしまいます。
> # "浦島太郎"と入れて"浦島 太郎"と間にスペースを入れると" "と更に惨劇に・・・
> # できることなら"浦島 太郎"と入れると"ウラシマ タロウ"と出したいのです。

自分の期待する動作と違うなら、何がその原因なのかをデバッグして追ってください。

原始的な方法ですが、
・プログラムのあちこちでDebug.Print文を使っていろんな変数の状態を確認できるようにする。
・プログラムを動かしながら、どんなタイミングでどんな処理が行われているのかトレースする。
といった感じで、いつ何が起きているのかを確認するとよいと思います。

投稿時間:2007/07/30(Mon) 13:38
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re^5: ふりがなの取得の仕方って?
 簡単にやろうとすると、姓と名を別のテキストボックスに分けてしまうのが
一番簡単なやり方だと思います。

 上級者向けですが、以下のサンプルを使用すると、かなりいい感じになると
思います。

http://www.alato.ne.jp/kazu-/vb/tip10.htm

 ただし、サブクラス化の手法を使用していますので、初心者の方は
手を出さないほうがいいと思います。

 サブクラス化については、以下を参考してください。

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/subc/

投稿時間:2007/07/30(Mon) 14:42
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^6: ふりがなの取得の仕方って?
サブクラス化しなくても下記のサンプルのようにダミーのテキストボックスを1個使用
すれば、簡単にできます。
リアルタイムにテキストボックスにふりがなが入り又、スペースもふりがな同様に
ふりがな用テキストボックスに入りますし、Back Space による1文字づつのふりがなの
削除もできます。

http://hanatyan.sakura.ne.jp/yybbs/upl//1185774455-1.gif
210  02 [IME関係] 使用  未掲載  ふりがなを取得する(姓・名等の連続入力に対応)

API関数を使ってフリガナを取得。多くのサンプルは一度の確定文字列分のフリガナしか取得できないが、ダミーのテキストボックスを使用する事で続けてフリガナ取得ができる。又、変換履歴を保存する事によって削除にも対応している。機能の割にはコードは案外簡単です。

又、魔界の仮面弁士 さんが投稿されている下記の方法もあります。

http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?no=2964&reno=2962&oya=2962&mode=msgview&page=1320

投稿時間:2007/07/30(Mon) 15:41
投稿者名:3時間放置のポテチ
Eメール:
URL :
タイトル:
Re^7: ふりがなの取得の仕方って?
レス遅れてすいません。

よねKENさん
>あくまでサンプルですから、何も手を加えずに3時間放置のポテチさん
>の期待する結果になるとは限りません。その辺は工夫が必要でしょう。
>まずサンプルを動かせてどのように処理されているのかを分析しましょう。
確かに何を思ったのか全く手を加えずに動かしてました(恥

>自分の期待する動作と違うなら、何がその原因なのかをデバッグして追ってください。
>プログラムのあちこちでDebug.Print文を使っていろんな変数の状態を確認できるようにする。
>プログラムを動かしながら、どんなタイミングでどんな処理が行われているのかトレースする。
とありますがこれは[F8]キーで実行するということですよね?


Starfishさん
プログラム自体始めて間もない初心者ですのでおとなしく手を出さずに眺めておきます。

花ちゃんさん

> リアルタイムにテキストボックスにふりがなが入り又、スペースもふりがな同様に
> ふりがな用テキストボックスに入りますし、Back Space による1文字づつのふりがなの
> 削除もできます。
> API関数を使ってフリガナを取得。多くのサンプルは一度の確定文字列分のフリガナしか取得できないが、ダミーのテキストボックスを使用する事で続けてフリガナ取得ができる。又、変換履歴を保存する事によって削除にも対応している。機能の割にはコードは案外簡単です。
さすがです花ちゃんさん、ダミーテキストボックスという発想は出てきませんでした。
そしてここはコードを聞いたら負けな予感がしますな。(∩゜Д゜)アーアー

提出期限も迫っているので一度エクセルでふりがな取得をして、完成して時間があれば
ダミーテキストボックスを使ったやり方に移植していこうと思います。

投稿時間:2007/07/30(Mon) 21:03
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re^8: ふりがなの取得の仕方って?
> 提出期限も迫っているので一度エクセルでふりがな取得をして、完成して時間があれば
> ダミーテキストボックスを使ったやり方に移植していこうと思います。

 エクセルの方式は、再(逆)変換しているので、入力したカナが返ってくる
保証はありません。そこが、許せるかどうかですね。

 たとえば、以下を繰り返し入力してみてください。
 草g 剛(クサナギ ツヨシ)
 森田 剛(モリタ ゴウ)

 IMEの学習機能があるので、どういうルールになっているかわかりませんが
入れたカナ文字が必ず表示されることはないようです。

投稿時間:2007/08/06(Mon) 10:25
投稿者名:3時間放置のポテチ
Eメール:
URL :
タイトル:
Re^9: ふりがなの取得の仕方って?
お礼のレスが遅れて申し訳ありません。徹夜で作業して提出はできましたが風邪が・・・

Starfishさんレスありがとうございます。
>  たとえば、以下を繰り返し入力してみてください。
>  草g 剛(クサナギ ツヨシ)
>  森田 剛(モリタ ゴウ)
草g 剛(クサナギ ゴウ)
森田 剛(モリタ ツヨシ)
になってました(笑)
しかし課題の項目としては変換ができるかという課題でしたので、
突っ込まれる事なくスルーされました。

また機会があれば質問させてもらいます。