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

投稿時間:2007/01/21(Sun) 17:39
投稿者名:かけぼん
Eメール:
URL :
タイトル:
テキストボックス入力確定文字の再変換
こんばんは VB6で 手が少し不自由な子供のために以下のようなものを作っています。

フォームに テキストボックス1と2を作り
コマンドボタンで全角ひらがなのボタンを ずらっと並べて
その文字ボタンをクリックすると テキストボックス1に文字が表示します。
そして変換ボタンを押すと 漢字に変換されて 良ければ 確定ボタンを押して
テキストボックス2へそれを表示する。

というものです。

例えば やまだ と打って 変換ボタンを押すと 山田 とかが出てきて
確定ボタンで確定させる と言う事です。

問題はコマンドボタンを押してテキストボックスに書かれる文字は確定文字で入ってしまう
と言う事でして、この解決策として

1、そもそもキーボードで打ったのと同じような状態で入力する事がコマンドボタンを
  押してできないのか?
2、確定文字で入力されたものをキーボードで打った時とおなじ下線付きの状態にできないか?

と言う事とを考え色々捜しましたがMS−IMEの再変換機能などでは少し操作が多く
子供には少しやりづらいので もっとシンプルにできないかと思っています。

次に 変換する時は通常スペースキーを押しますが、これもキーボードを使わず
コマンドボタンをクリックする事で同じような効果が出るようにはできないでしょうか?

OSはXPのプロフェッショナルです。
VBは6.0です
IMEはMS と ATOK 両方使えます。

どなたか教えてくださいますと助かります。
よろしくお願いします。

投稿時間:2007/01/21(Sun) 18:19
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: テキストボックス入力確定文字の再変換
> 1、そもそもキーボードで打ったのと同じような状態で入力する事がコマンドボタンを
>   押してできないのか?

実際にテキストボックスに文字を入力する時にはどのようにしますか? その手順
通りにプログラムすればいいだけです。

> 2、確定文字で入力されたものをキーボードで打った時とおなじ下線付きの状態にできないか?

こちらも上記同様

まさか下記のような事はしていないでしょうね
Private Sub Command1_Click()
   Text1.Text = Text1.Text & "あ"
End Sub

下記を参考に。
http://hanatyan.sakura.ne.jp/vbhlp/keyevent.htm
http://hanatyan.sakura.ne.jp/vbhlp/keybdeve.htm

又、IME パッドの ソフトキーボードを利用する手もあります。

投稿時間:2007/01/22(Mon) 12:25
投稿者名:かけぼん
Eメール:
URL :
タイトル:
Re^2: テキストボックス入力確定文字の再変換
回答ありがとうございます。

> まさか下記のような事はしていないでしょうね
> Private Sub Command1_Click()
>    Text1.Text = Text1.Text & "あ"
> End Sub

すいません そのまさか をしていました。

教えて頂いたところを勉強して
もう一度トライしてみます。

ソフトキーボードは便利そうだったのですが
ボタンが小さいので(1つの文字ボタンの大きさが4倍くらい欲しい・・)
がんばって作っていこうと思います。

ありがとうございます。

投稿時間:2007/01/22(Mon) 12:56
投稿者名:ダンボ
Eメール:
URL :
タイトル:
誰か作ってあげたら
> ソフトキーボードは便利そうだったのですが
> ボタンが小さいので(1つの文字ボタンの大きさが4倍くらい欲しい・・)


思いつきだけですみません。


WindowsXPの標準機能に拡大鏡がありますね。
あれは見るだけなんですが、操作することもできるように仕様拡張すればいいかも。

後は、ソフトキーボードに嘘解像度を送り込んで表示を大きくさせるとか。

投稿時間:2007/01/22(Mon) 13:09
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 誰か作ってあげたら
> WindowsXPの標準機能に拡大鏡がありますね。
> あれは見るだけなんですが、操作することもできるように仕様拡張すればいいかも。

最近の Microsoft 製マウスドライバには、操作可能な拡大鏡の機能が付いていますね。

投稿時間:2007/01/22(Mon) 13:59
投稿者名:y4yama
Eメール:
URL :
タイトル:
Re^3: テキストボックス入力確定文字の再変換
> ソフトキーボードは便利そうだったのですが
> ボタンが小さいので(1つの文字ボタンの大きさが4倍くらい欲しい・・)

XPだったら、アクセサリ > ユーザー補助に、「スクリーンキーボード」というのが
ありますね。この大きさでも、小さすぎるのでしょうか?面積では2倍近いですが・・

投稿時間:2007/01/22(Mon) 13:07
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: テキストボックス入力確定文字の再変換
> 入力確定文字の再変換
> IMEはMS と ATOK 両方使えます。

http://web.archive.org/web/20011218005939/www.netlaputa.ne.jp/~stadt/vb/t12_ime/reconvert.htm

とか。

投稿時間:2007/01/22(Mon) 15:01
投稿者名:かけぼん
Eメール:
URL :
タイトル:
Re^2: テキストボックス入力確定文字の再変換
皆様 色々ありがとうございます。
スクリーンキーボードも色々表示させてみましたが
XP標準のものでもあと倍の大きさが欲しいです。
文字は大きくなるんだけど キーの大きさが大きくならなかった・・。

また拡大鏡も調べてみましたが操作が少しややこしくなるみたいで・・・。
サンプルを始め皆様から教えて頂いたことを参考に
色々トライしてみようと思っています。

モニターをでかくすればとも思ったのですが
いま液晶17インチでして、これ以上大きくても値段も高いし
解像度を合わせたら結局小さくなるしで 作るしかないかなと思っています。

また良い知恵がありましたら教えてください。

投稿時間:2007/01/22(Mon) 15:31
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: テキストボックス入力確定文字の再変換
具体的な仕様はどのようなものでしょうか?
1個キーの大きさは ソフトキーボードのキーの4倍とかで
キー配列は、ソフトキーボードの50音配列のようなものでしょうか?
又、他のアプリ等への入力も考えておられるのでしょうか?

フリーソフト等ではありませんでしたか。

本格的に作られなら、SendInput APIを使った方法をお勧めします。
http://hanatyan.sakura.ne.jp/vbhlp/SendInput.htm

再変換だけなら下記でもできますが(お薦めできる方法ではありません)
Private Sub Command1_Click()
   Text1.Text = "あい"
   Text1.SetFocus
   DoEvents
   SendKeys "{F13}"  '再変換
   SendKeys "{F6}"  '変換前のひらがなに
End Sub

投稿時間:2007/01/22(Mon) 15:56
投稿者名:かけぼん
Eメール:
URL :
タイトル:
Re^4: テキストボックス入力確定文字の再変換
回答ありがとうございます


> 具体的な仕様はどのようなものでしょうか?
> 1個キーの大きさは ソフトキーボードのキーの4倍とかで

1つのボタンを735×615にしています
あと ボタンとボタンの隙間を大きめにとってます。

> キー配列は、ソフトキーボードの50音配列のようなものでしょうか?

基本的には50音+濁音+半濁音+数字+アルファベットなど全ての文字を
ボタンで用意しています(ボタンが80個近くになりました)

> 又、他のアプリ等への入力も考えておられるのでしょうか?

今のところ考えていません
行うとすれば書いたものをクリップボードにのせて貼り付けるようにしようかと思っています。

>
> フリーソフト等ではありませんでしたか。

色々(4種類ほど)見たのですが どれも納得行くボタンの大きさではなかったのと
ボタン同士の間隔が狭いのが難点でした。

>
> 本格的に作られなら、SendInput APIを使った方法をお勧めします。
> http://hanatyan.sakura.ne.jp/vbhlp/SendInput.htm

上記も試してみようと思います。

>
> 再変換だけなら下記でもできますが(お薦めできる方法ではありません)
> Private Sub Command1_Click()
>    Text1.Text = "あい"
>    Text1.SetFocus
>    DoEvents
>    SendKeys "{F13}"  '再変換
>    SendKeys "{F6}"  '変換前のひらがなに
> End Sub

このコードは単独で動くのでしょうか
まんま貼り付けてやってみたら
あい と表示されて 特に変化が出なかったので
何か初めにしておかないといけないのでしょうか?

使用する(開発する)PCはXPです。

色々本当にありがとうございます。
もやもやとしていたものが何となく見えてきたので
色々やってみます

投稿時間:2007/01/22(Mon) 16:12
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: テキストボックス入力確定文字の再変換
あい の下にアンダーラインが引けていませんか(変換前の状態)
'SendKeys "{F6}" をコメントにしてもおなじですか

投稿時間:2007/01/22(Mon) 17:19
投稿者名:かけぼん
Eメール:
URL :
タイトル:
Re^6: テキストボックス入力確定文字の再変換
> あい の下にアンダーラインが引けていませんか(変換前の状態)
> 'SendKeys "{F6}" をコメントにしてもおなじですか

同じでした、テキストボックスに あい とでで先頭でカーソルがピコピコしています。

あと先に頂いたサンプル(キーストロークをシミュレート(押下げ・制御)する)
で今色々やっていますが テキストボックスに 変換前の下線付き文字が
一個は出てくるのですが 2個以上出す時はどうすればいいのでしょうか?

か を表示させようと

Private Sub Command4_Click()
    Text1.SetFocus
    Call keybd_event(VK_K, 0, 0, 0)
    Call keybd_event(VK_K, 0, KEYEVENTF_KEYUP, 0)
    Call keybd_event(VK_A, 0, 0, 0)
    Call keybd_event(VK_A, 0, KEYEVENTF_KEYUP, 0)
End Sub

を作ると あ が消えて か だけになり あか とはなりません

分からない事だらけですいません
また教えて頂けたらと思います

投稿時間:2007/01/22(Mon) 20:00
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: テキストボックス入力確定文字の再変換
>同じでした、テキストボックスに あい とでで先頭でカーソルがピコピコしています

IME がOFFになっていませんか?(この辺でもたついていたら...。)

未変換の日本語を連続して入力しようとすると、CommandButton 等を使用すると
フォーカスが移動してしまい1文字しか入力できません。

従ってフォーカスが移動しない工夫が必要です。簡単な方法なら下記を試して
見て下さい。
Form にテキストボックス 1個 と ラベルを1個貼り付けて下さい。


Option Explicit
'----------------------------------------------------------
'この部分は下記より貼り付けて下さい。
' http://hanatyan.sakura.ne.jp/vbhlp/SendInput.htm

'----------------------------------------------------------

'下記の部分は新たに追加本格的にはコントロール配列で
Private Sub Form_Load()
   With Label1
      .Move 1500, 1440, 735, 616
      .Appearance = 0
      .BorderStyle = 1
      .BackColor = &H8000000F
      .Caption = " あ"
      .FontName = "MS Pゴシック"
      .FontSize = 24
   End With
'別途カナ入力に設定しておいて下さい。
'(実使用上はキー操作から実施するように設定)
   Text1.IMEMode = 1
End Sub

Private Sub Label1_Click()
   Text1.IMEMode = 1
   Call mySendKeys(vbKey3, Text1)
   '後は使用するキーに合わせて上記のキーコード定数を変更して下さい。
End Sub

Private Sub Label1_MouseDown(Button As Integer, _
                  Shift As Integer, X As Single, Y As Single)
   Label1.BackColor = &H8000000B
   Label1.Refresh
End Sub

Private Sub Label1_MouseUp(Button As Integer, _
               Shift As Integer, X As Single, Y As Single)
   Label1.BackColor = &H8000000F
End Sub

Private Sub mySendKeys(ByVal myKey As Long, ByVal myControl As Control)
    Dim wVkKey() As Long
    Dim UpDown() As Long
    myControl.SetFocus
'    StopTime 100
    ReDim wVkKey(1) As Long
    ReDim UpDown(1) As Long
    wVkKey(0) = myKey:    UpDown(0) = 0
    wVkKey(1) = myKey:    UpDown(1) = 1
    sKeyEventSet 1, wVkKey, UpDown
End Sub

'----------------------------------------------------------
Private Sub sKeyEventSet(nInput As Long, _
                         wVkKey() As Long, UpDown() As Long)
'この部分は下記より貼り付けて下さい。
' http://hanatyan.sakura.ne.jp/vbhlp/SendInput.htm
    
End Sub
'----------------------------------------------------------

投稿時間:2007/01/23(Tue) 02:24
投稿者名:かけぼん
Eメール:
URL :
タイトル:
Re^5: テキストボックス入力確定文字の再変換
できましたできましたできました〜
思っていたとおりのことができました。

ものすごくうれしいです。

いまは あ と い だけですが これを全部作っていけば
思い通りの物ができます。

子供にも少し見せたら喜んでいました。

本当に本当にありがとうございます。

寝不足に気を付けながらがんばります。

投稿時間:2007/01/24(Wed) 11:07
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: テキストボックス入力確定文字の再変換
仕様が解らないので適当に作っておりますが。
http://hanatyan.sakura.ne.jp/freesoft/keyboard.htm