プロが教えるわが家の防犯対策術!

テキストボックスに入力できる文字を半角文字は最大30字、全角文字は最大15字に設定したいのですがどのようにすればできるのでしょうか?知っている方教えてください。

A 回答 (4件)

2つ方法を提案しておきますね。



こちらがVB的
1.KeyPressイベントで、すでにテキストに入力されている文字のバイト数と、イベントの引数で渡されてくる入力された文字のバイト数を足し、30より大きくなるのであれ
ば、0を文字として返すことで入力できなくする。

バイト数を求めるにはStrConvを使ってください。


API使用
2.SendMessageで、テキストボックスにEM_LIMITTEXTメッセージを送る。

です。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。

お礼日時:2002/06/13 14:55

VB5以上、WindowsNT以降では、半角と全角という概念が薄れています。


半角も内部で2バイトとして扱われるようになってしまったからです。
プロポーショナルフォントの登場で、半角文字が全角文字の半分の幅を持たなくなったのにも起因します。
これからは半角か全角かに依存するプログラムを作ることは、推奨されません。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。

お礼日時:2002/06/13 14:55

こんにちは。

maruru01です。
全角と半角で分けるとなると、MaxLengthプロパティも使えなさそうです。
従って、テキストボックスのExitイベントか、LostFocusイベントに以下のように書くのはどうでしょう。

If LenB(StrConv(Text1.Text, vbFromUnicode)) > 30 Then
  Msgbox "文字数オーバー"
  With Text1
    .SetFocus
    .SelStart = 0
    .SelLength = Len(.Text)
  End With
  Exit Sub
End If

ちなみにこの場合は、半角文字を1文字=1、全角文字を1文字=2として文字数を数えて、全体で30を越えたらメッセージを出すようになっています。
では。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。

お礼日時:2002/06/13 14:55

テキストボックスのプロパティ「MaxLength」に30と設定する。

この回答への補足

すいません。MaxLengthを使うと半角文字でも30字入ってしまうのでそれ以外の方法でありませんか。

補足日時:2002/06/07 18:09
    • good
    • 0
この回答へのお礼

回答どうもありがとうございました。

お礼日時:2002/06/13 14:54

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