VB6の画面入力でテキストボックスにフォーカスが移った際、半角カナや全角漢字、半角アルファベット大文字と云ったキーボードからの入力を制御したい(OSはWinXp/FEPはIME2002を使用)のですが、良い方法が有れば教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

入力を制御したいだけであれば、


テキストボックスのプロパティ「IMEMode」で出来ます

更に入力制限をかけたいのであれば、
マスク エディット (MaskEdBox) コントロールを使用する

#1さんの回答はテキストボックスにて入力制限を行うですね
    • good
    • 2
この回答へのお礼

今回は入力制御の要求の方がが高いので、利用させて頂きます。
IMEMode・・・見つけられなかった(恥)

お礼日時:2003/10/01 09:38

#1です。


私の方法で行くならば、KeyAsciiのコードを変えれば他にも対応できるでしょう。
半角のカナだけとか、全角とか漢字だけ等。
それぞれのコードはご自分で調べてください。
    • good
    • 0
この回答へのお礼

 入力内容についてのチェックが範囲指定でいろんな幅で設定出来ますね。
有難うございます。応用させていただきます。

お礼日時:2003/10/01 09:41

ということは、半角の数字だけ入力可にしたいということでいいのでしょうか?


下記参考になりますか?
半角数字とバックスペースのみ効きます。
フォーカスが移る際に下記関数を呼んであげればよいはずです。
見当違いでしたら、ごめんなさい。

'#####################################################
'# 半角の数字とBackSpaceしか入力できないようにする #
'#####################################################
Public Sub HankakuCHK(KeyAscii)
If KeyAscii < 48 Or KeyAscii > 57 Then
If KeyAscii <> 8 Then
KeyAscii = 0
End If
End If
End Sub

この回答への補足

 有難うございます。
質問の趣旨としてはフォーカスが来た際(Got_Focus)に、文字種類を制御したいって事です。
例えば”CapsOnの半角アルファベットを打たせたい”とか”2バイト文字のカナを打たせたい”とかをコントロールしたいです。

 と云う訳で"半角数字とバックスペースのみ"のテキストボックスにはこれを使うという事ですね。早速試してみます。

補足日時:2003/09/30 17:59
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qローマ字入力が安定してできない

とにかくローマ字入力ができたりできなかった理で困っています。プロパティからローマ字入牢を選んでやるとしばらくはできるのですが、突然できなくなるのです。半角からローマ字入力ができるようになっても同じ用に突然できなくなります。Vistaなのでもう終わりにしようかとも追うのですが、もったいない気もするので直す方法があれば教えてください。

Aベストアンサー

> とにかくローマ字入力ができたりできなかった理で困っています。

Vistaをお使いとのことですので、もしかしたら、MS-IME 2007をお使いでしょうか?

他の原因かも知れませんが、念のため、下記URLのページをご覧になって、MS-IME 2010をインストールしてみてください。(無料です。)

「Microsoft Office IME 2010」
https://www.microsoft.com/ja-jp/office/2010/ime/default.aspx

Qサロゲートペア文字の半角カナ変換について

VB.net 2005 において開発を行っております。
処理として、文字を半角カナに変換する処理を行っているのですが
このたび、サロゲートペア文字に対応することになりました。

現在までは、下記のような処理でおこなっておりましたが

 StrConv(’文字が入ります’, VbStrConv.Katakana)

サロゲートペア文字は、’??’として返ってきてしまい困っております。
そもそもサロゲートペア文字を半角カナに変換することはできないのでしょうか?

またその場合どのような対処で処理を行うのがベターなのでしょうか。。。
サロゲートの文字のみ回避して、他の文字は半角変換するような形になるのでしょうか。

お力の程、お貸しいただけると助かります。
よろしくお願いいたします。

Aベストアンサー

サロゲートペア?
よく分からんけど、下記が参考になるのでは?
http://www.atmarkit.co.jp/fdotnet/dotnettips/732parsechars/parsechars.html
とその関連リンク。

でも
http://www.magata.net/memo/index.php?%A5%B5%A5%ED%A5%B2%A1%BC%A5%C8%A5%DA%A5%A2
半角カナに変えられそうな文字は無さそうですよ。

Qローマ字しか入力できない(再)

何度も申し訳ありません。
平仮名で入力できません。すべてローマ字になってしまいましす。

Wordなどでは普通に平仮名で入力できるのにインターネット検索などで入力する時だけ
ローマ字でしか入力できません。

言語バーの左に[あ]となってるのにローマ字しか出ません。
バーの右に出てるCAPSやKANAが関係あるのでしょうか?

今までの質問を参考にしてIMEスタンダードのプロパティから[ローマ字入力]にもしました。
{というか最初からなってたのですが}

http://oshiete1.goo.ne.jp/kotaeru.php3?q=246469も参考にしましたが何かをダウンロードした直後になった訳ではないのでどうなんでしょう?この質問者様の場合、アドレスバーの下にボタンが出たりしてるそうですがそんなことはとくにありません。



ほんとに困ってます。よろしくお願いします

Aベストアンサー

用語を次のように変更されたほうが誤解を招かずにすみます。
 「ローマ字」→「直接入力」(または「英数字」)
 「平仮名」→日本語
日本語変換入力の方式として「ローマ字入力」と「かな入力」の二つがあります。

ATOKでお尋ねの状況が発生したのを見聞きすることはありませんが、MS IMEはもともとIEとの相性が悪いのか、下記のようなことがあり、
OS再起動のほか特効薬はないのかも知れません。
http://support.microsoft.com/kb/413643/ja
IE7はIE6よりもこの問題が起こりやすいようにも聞いています。
Office IME 2007もなにかと不具合が起こりやすいようですが…。

[KANA]や[CAPS]は関係ありませんが、クリックしたために周りと違った色になっていたら、もう一度クリックして周りと同じ色に戻しておいて下さい。

Qフォーカスを取得すると、自動的に半角英数にする方法

いつもお世話になっております。

フォーム上にテキストボックスを配置し、
そこにフォーカスがきたときに自動的に
半角英数入力にする方法はあるのでしょうか?

お分かりの方がおられましたら、よろしく
お願いいたします。

Aベストアンサー

テキストボックスには IME モードを切り替えのプロパティーが
用意されてますよ。[IMEMode]です。

Qローマ字入力ができない!

日立のウィンドウズ(ビスタ)の新古品を買って使いはじめました。
日本語のローマ字入力をしようとするのですが、Altと左上の方にある「半角/全角」というキーをいっしょにおして今まで英数入力と切り替えていたのですが、
そう押しても「ローマ字入力に切り替えますか?」ときく画面で「はい」を選択しても切り替わりません。
キーの上に書いてあるかな入力から抜け出せず、困っています。

Aベストアンサー

言語バーは出ていますか?
日本語入力は、IMEだけとは限りませんので、言語バーの赤い所を右クリックで確認してみては。

IMEの場合IMEのプロパティの編集タブの変更を開くとキー操作一覧表示が出ますが←ここを前の持ち主がいじって(自分好みに変更してると)ると、IMEでも、全然違う動作に変わって居る場合がありますので、言いかえれば、自分好みにカスタマイズする事も出来ます。

因みに、私のは、かな、ローマ字切り替えは、Alt+半角/全角、でも【Ctrl】キーと【Shift】キーを押しながら、【カタカナ ひらがな】キーでも切り替わりすが、【Alt】キーを押しながら【カタカナ ひらがな】キーでは、変更できません。

詰まり、IMEのプロパティの編集タブの中身次第で動作が決定されます。

QVBで、String型のデータが、全角か、半角かを判断する関数は・・・

こんにちわ。

VB5.0で、String型のデータが、全角か、半角かを判断する関数はあるでしょうか?また、判断方法を教えてください。

よろしくお願いします。

Aベストアンサー

こんにちは。maruru01です。

Asc関数で文字のコードを取得して判断すればいいと思います。
半角はコードが0~255だったと思うので、次のようになります。

文字変数をsとして
If 0 <= Asc(s) And Asc(s) <= 255 Then
  MsgBox "半角です"
Else
  MsgBox "全角です"
End If

ちなみに私の環境はVB6.0なので5.0では試してません。(問題ないと思いますが。)
では。

Qローマ字入力できない

ローマ字入力できません すごく打ち辛いです

Aベストアンサー

言語バー右クリック→設定→プロパティ→ローマ字/かな入力をローマ字入力 に設定
のことでしょうか?

Q全角、半角のデータの抽出方法

あるシステムからデータを受け取る際に氏名の領域が16バイト取ってあるのですがこの領域だけ抽出しようとしたらうまくいきません。
漢字が4バイトでスペースが2バイトの為MID関数を使うと名前の字数で抽出される領域が16バイトとることが出来ないのでうまく16バイト取る方法ご存知の方お教えください。お願いします。

Aベストアンサー

固定長文字列の作成関数を載せました。
「fixStr」関数と命名しております。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=172521

Qローマ字・かな 入力モード切り替え、半角全角漢字で、できない。

1.ローマ字・かな 入力モード切り替え、半角全角漢字で、できない。

2.スペースで、空白できない。

Aベストアンサー

>いくつか、詳しく知りたいキーワードがあるのですが、お勧めの辞書サイトはありますか? できれば、右クリックで、検索できるものを教えてください。

私は、基本的にGoogleしか使いません。前回、私が記述した内容程度の語句なら、Googleにかかります。

>Sonyは、made in タイ。Acerは、中国でした。.

Sonyは、おそらくNMBのOEM製品です。Acerとあわせて、どちらも中級以上のキーボードだと思われます。

>3000円までが、予算ですが、そのくらいで、
買えますか?

激安\1000のキーボードもありますが、\3000ぐらい投資していただくと、程度のいい物が買えます。

>英語版、日本語版の見分け方は、ありますか?

日本で流通しているもののほとんどが日本語版で、英語版との見分け方は、一目瞭然です。英語版には、カナや漢字の文字が刻印(今は印刷)されていませんから。また、キートップの数も少ないです。

>セーフモードで、立ち上げたとき、選択肢が3つあって、適当に、選んだら、不都合はなかったみたいなので、
ほっときましたが、また、疑問に思いました。

上記と同様ですが、日本語版(106~109など)なら、「半角/全角」キーを押しておけば、99%以上の確率で正解です。

他の選択肢が、101系(英語キーボード)とAX系(10年以上前にすたれた日本語キーボード)しかありません。

#キーボードにこっていますので、いずれも持っていますが、AXキーボードは骨董品かつ珍品扱いです。

>いくつか、詳しく知りたいキーワードがあるのですが、お勧めの辞書サイトはありますか? できれば、右クリックで、検索できるものを教えてください。

私は、基本的にGoogleしか使いません。前回、私が記述した内容程度の語句なら、Googleにかかります。

>Sonyは、made in タイ。Acerは、中国でした。.

Sonyは、おそらくNMBのOEM製品です。Acerとあわせて、どちらも中級以上のキーボードだと思われます。

>3000円までが、予算ですが、そのくらいで、
買えますか?

激安\1000のキーボードも...続きを読む

QVB2008で全角半角の判定

VB2008で全角半角の判定
VB6 では下記のようにして判定していましたが、VB2008では
どのようにすればよいのかお教えください。

 dim moji as string
dim zhN as integer
 zhN = LenB(StrConv(moji, vbFromUnicode))

mojiには1文字格納されており、
 半角なら zhN = 1 全角なら zhN = 2
となる。

 これをVB2008で実現する方法がわかりません。
 よろしくお願いします。

Aベストアンサー

zhN = System.Text.Encoding.GetEncoding("ShiftJIS").GetByteCount(moji)

zhN = System.Text.Encoding.GetEncoding(932).GetByteCount(moji)

zhN = System.Text.Encoding.Default.GetByteCount(moji)
は同じ意味です。
エンコーディング名"ShiftJIS"のIDが932番です。
1番上はエンコーディング名よりIDを取得し、IDから情報を取得します。
2番目はIDから情報を取得します。
3番目はデフォルト(初期設定時の選択言語が日本語であればShift-JIS)で使用されている情報を使用します。

取り出す手間がかからない分、下に行くにつれて速度が上がります。

さらに蛇足ですが、エンコーディングとはどの文字コード(エンコード)に対応付けするかを意味します。
文字コード表は見たことありますでしょうか?
ASCIIコード表あたりが見やすいので検索してみてください、イメージがつかめます。
コンピュータは、例ですが(1,1)は'a'、(1,2)は'b'といった具合に番地に文字が割り当てられている表を使用し、バイトデータを文字に置き換えています。

VBなどで使用されている文字コードはユニコードです。
ユニコードは最大4byteで一文字をあらわします、ShiftJISは最大2byteで文字をあらわします。
ユニコードでは"あ"は3byteですが、シフトジスでは2byteです。
別の文字コードにEUCがありますが、
EUCで半角文字の"ア"は2byteですが、シフトジスでは1byteとなります。

.NETFrameworkでは複数の文字コード表に対応しています、そのため、エンコードを指定してバイト数を取得する必要が出てきました。

zhN = System.Text.Encoding.GetEncoding("ShiftJIS").GetByteCount(moji)

zhN = System.Text.Encoding.GetEncoding(932).GetByteCount(moji)

zhN = System.Text.Encoding.Default.GetByteCount(moji)
は同じ意味です。
エンコーディング名"ShiftJIS"のIDが932番です。
1番上はエンコーディング名よりIDを取得し、IDから情報を取得します。
2番目はIDから情報を取得します。
3番目はデフォルト(初期設定時の選択言語が日本語であればShift-JIS)で使用されている情報を使用します。

取り出す...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング