その名前入力欄には、数字とか記号など名前を入力する際に必要のないものは入力できないようにしたいのですが誰か教えていただけないでしょうか?
VB6で作ってます。
KeyPressイベントで判断する。
例 テキストボックスで数値のみを受け取る方法
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/NumericEdit/
そうなのですが、数値は入力したくないのです・・・
編集 削除>そうなのですが、数値は入力したくないのです・・・
提示した例は確かに数値のみだけど、
応用してその逆を行えばいいだけですよね。
半角は制御できるようになりました^^
全角の制御はどうしたらよいでしょうか?(全角の数字など)
>全角の制御はどうしたらよいでしょうか?(全角の数字など)
半角に変換すればいいでしょう
全角と半角を変換する
http://homepage1.nifty.com/rucio/main/Samples/vbsample047.htm
やじゅさんの紹介してくれたサンプルの関数の使い方わかりますか?
編集 削除少しは自分で考えたらどうだ・・・
一つアドバイスしてやる。
サンプルの「使い方」じゃなく、サンプルの「中身(処理内容)」を考えろ。
適当にそこらで拾ってきたコードをペタペタ貼り付けてプログラムを組んだ気でいる奴はただのアホだ。
もし仕事でやってるのなら、ある意味詐欺だよな・・・
先輩に聞いてからやれや
それと自分で理解していないと、自分の思い通りの動作をしないときに困るだろうに
「思ったように動きません」に対して
「お前がそう動作するように作ったんだろうが!」って言われるだけだぞ。
こういう考えでこう書いてみたんだけど、こうしたときにこんな動きをしてしまいます
こう動かそうと思ってプログラムしたんですが、この場所でこういう値になってしまいます
というのになったらまた来いや
えーと、「名前の入力」をTextBoxでやろうとしていると仮定して。
TextBoxで入力した瞬間に制御できるのは半角だけです。
全角文字については主にIME(漢字変換)という「別のプログラム」が
組み合わされて動作し、全角文字列が確定した時点でTextBoxに流し込まれる、
という動作となります。
従ってまず、KeyPressなどのKey***系で入力した瞬間にはじくなどの
制御ができるのは、半角系の(キーボードから直接入力できる)文字列に限られる、
ということになりますね。
しかしIMEは制御が難しく、また制御してもさほどの意味もありません。
例えば「S」と入力されても、その後「A」と入力されて「さ」になるかも
しれないので「S」の入力は禁止できませんし、しかし「S」だけで確定されたら
TextBoxに入ってしまいますよね。
そこで、TextBoxへの入力文字列が変更された場合に発生する「TextChanged」
イベントを使ってみてはいかがでしょう。
これであれば、入力されている文字列に不適切な文字が混ざっていないかを
柔軟にチェックできますので、かなりご希望に近い動作になるのではないかと思います。
ただ、使う側から見た場合、入力したはずの文字がひょこひょこと消えていくような
動作に見えてわずらわしく感じる場合があります。
私でしたら入力そのものは自由にできるようにし、OKボタンを押した時など
入力データを確定するタイミングでチェックしてエラーを出すような仕様にします。
可能であれば、こちらも一度ご検討いただくといいかもしれません。
>KeyPressなどのKey***系で入力した瞬間にはじくなどの
>制御ができるのは、半角系の(キーボードから直接入力できる)文字列
>に限られる、
そうでしたね、そうすると質問者の意図と私の回答がずれてますね。
入力データを確定するタイミングでチェックしてエラーを出す
がいいと思われます。
その方法でやってみたのですが、半角みたいにアスキーコードみたいなものってありますか?あれば教えてください。
入力時はIMEModeで全角ひらがなに設定しています。
> あれば教えてください。
ここまで基本的なお話なんであれば、一度ご自分で調べてみてはいかがでしょう。
例えばGoogleで「VB6 漢字 文字コード」というキーワードで検索すると、
一番最初にこの掲示板のQAがヒットします。
その中で魔界の仮面弁士さんが、前提として説明されていますよ。