Enterを押した時によしなに動作するテキストボックス
記念すべき資料館ネットワークカテゴリの第一弾の記事は、読み返せば至極簡単なものになっちまった。
けど、オイラがここで2日ほど悩んだ事は確かなので、こんな後進がいるかどうかはわからんがとりあえず描いておくことにする。
失敗と挫折
今回作るのは、Enterキーを押すと送信を行うテキストボックスである。
ナーンだstickでEnter検出時に処理すりゃええやん、と思って作ったら大失敗した。
日本語入力の変換確定時にEnterキーを押すため、入力中の文章が問答無用で送信処理されてしまうのである。これはクマッた。英字だけ送る分にはいいのかもしれないが、俺はあくまで日本語でチャットがしたいので、どうにかする必要があるわけだ。
キーワードは「改行」
- 変換の確定などで押されたEnterに対しては処理を行ってはいけない
- 文字入力が全て終わってEnterを押した時、処理を行う
この動作を行うためには、テキストボックスが入力中かどうか知れば良い。もっと言ってしまえば、その中の文字列が出来上がったものかどうか知ればいい。
ここで、メモ帳か何かに文字を入力中に、Enterキーを押した時の動作を考えてみよう。
- 入力中のとき
- 入力が確定する
- 入力中で無い時(入力が終わっているとき)
- 改行される
つまり、入力文字列に改行が含まれた時、これが入力終了のサインだ。このときに文字列の送信を行うという事にしよう。
改行コードを削除する
改行を検知した時に文字列を送信するわけだから、送信する文字列には当然改行コードが含まれる。オイラが想定しているチャットは複数行入力を認めないので、これを除去しよう。
http://lldev.jp/hsp/index.html (プログラミング工房)
オイラはここで公開されているモジュールを利用している。普通にinstrで\nを探して消していっても問題は無いだろう。
サンプル
以上のモノを踏まえたサンプルを作っといたので、欲しい人はどうぞ
chatbox.zip