人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VisualBasic 6.0で開発しております。例えば年賀状作成ソフトなどに良く付いているもので…
(1)あるテキストボックスに「霧島」と仮名入力して漢字変換する。
(2)すると「キリシマ」と表示されると同時に、別のテキストボックスには「キリシマ」とフリガナが表示される。
(3)続けて入力したときは、さらにフリガナが後ろに付け加えられる。
…と、いったフリガナの自動表示機能をVBのテキストボックスで実現するにはどうしたらよいでしょうか。こちら(http://www.winapi-database.com/tips/15/)も良かったのですが、一度Enterキーを押すと表示部がクリアされてしまい、続けて入力したときには続けて表示されません。

●質問者: くりくりまろん
●カテゴリ:コンピュータ
✍キーワード:VB VisualBasic クリア ソフト テキスト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● TONTON3
●5ポイント

フリガナの内容を変数に持ってちゃだめなんでしょうか?

◎質問者からの返答

変数を設けて文字列を結合するようにしてみたのですが、2回同じところを通るせいか、同じフリガナが繰り返されてしまうんですよね…


2 ● llusall
●65ポイント

http://www.winapi-database.com/tips/15/

を改修しました。


以下のようにテキストボックスを配置します。

名前も同じにしてください。

ふりがな| txtKana |
文字 | txtMoji |
| txtDummy |


フォームの内容を以下のように記述します。

Option Explicit

Const GCS_RESULTREADSTR = &H200


Private Sub Form_Load()

    Me.txtMoji.Text = ""

    Me.txtKana.Text = ""

    Me.txtDummy.Text = ""

    Me.txtMoji.IMEMode = 1

    txtDummy.Visible = False

End Sub


Private Sub txtMoji_KeyDown(KeyCode As Integer, Shift As Integer)

    If Shift <> 0 Then Exit Sub

    Dim hContext As Long

    Dim nSize As Long

    Dim A As String

    Dim rc As Long

    hContext = ImmGetContext(Me.hWnd)

    nSize = ImmGetCompositionString(hContext, GCS_RESULTREADSTR, vbNullString, 0)

    A = String(nSize, Chr(0))

    rc = ImmGetCompositionString(hContext, GCS_RESULTREADSTR, A, nSize)

    rc = ImmReleaseContext(Me.hWnd, hContext)

    txtDummy.Text = Left(A, nSize)

End Sub


Private Sub txtDummy_Change()

    txtKana.SelStart = Len(txtKana.Text)

    txtKana.SelText = txtDummy.Text

    txtKana.SelStart = Len(txtKana.Text)

End Sub

※標準モジュールはそのままとします。

◎質問者からの返答

ありがとうございます。できました。

ダミーをうまく使うのがミソのようですねー。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ