🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fj.lang.visualbasic
11 messages
11 total messages Started by Kuniyoshi Mohri Wed, 25 Feb 1998 00:00
標準のコンボボックスでの入力文字数制限に付いて
#569
Author: Kuniyoshi Mohri
Date: Wed, 25 Feb 1998 00:00
11 lines
1132 bytes
こん○○は!モーリ@ITCシステムです。
VB5の標準のコントロールのコンボボックスで、
.Styleが0(ドロップダウンコンボ)のとき、入力する文字数を制限するには
どうしたらよろしいのでしょうか?
どなたかご存知ではないですか?
よいお知恵をお持ちの方、よろしくお願い申し上げます。

*************************************************
                毛 利 邦 是  E-mail : mouri@itc-system.co.jp
*************************************************
Re: 標準のコンボボックスでの入力文字数制限に付いて
#570
Author: Sato Masahiro
Date: Wed, 25 Feb 1998 00:00
31 lines
1463 bytes
In article <6d0k75$r2i$1@nn-os001.ocn.ad.jp>, Kuniyoshi Mohri wrote:
>VB5の標準のコントロールのコンボボックスで、
>.Styleが0(ドロップダウンコンボ)のとき、入力する文字数を制限するには
>どうしたらよろしいのでしょうか?

面白そうなので、ちょっと考えてみました。

Private Sub Combo1_KeyPress(KeyAscii As Integer)

    Const MAXLEN As Integer = 10
    Dim InputLen As Integer
    
    Select Case KeyAscii
        Case 22: InputLen = Len(Clipboard.GetText())
        Case 0 To 31: InputLen = 0
        Case Else: InputLen = 1
    End Select
    
    If Len(Combo1.Text) - Combo1.SelLength + InputLen > MAXLEN Then
        KeyAscii = 0
    End If

End Sub

ぱっと思い付いたコードなので、やらなければいけない処理が
他にもあるかもしれません。

-- 
Computer Institute of Japan, Ltd.
佐藤正宏 masahiro@cij.co.jp
Re: 標準のコンボボックスでの入力文字数制限に付いて
#571
Author: Takeshi Shigihara
Date: Wed, 25 Feb 1998 00:00
12 lines
1177 bytes
Kuniyoshi Mohri wrote:
> VB5の標準のコントロールのコンボボックスで、
> .Styleが0(ドロップダウンコンボ)のとき、入力する文字数を制限するには
> どうしたらよろしいのでしょうか?

APIなら、 CB_LIMITTEXT というメッセージがあるのですが、
こっちはVBを知らないもんで、VBでは、どう使うのか分かりません(^^;

----- Takeshi  Shigihara
      Office   cygnus@masternet.or.jp
      Home     cygnus@po.jah.ne.jp -----
Re: 標準のコンボボックスでの入力文字数制限に付いて
#573
Author: Kuniyoshi Mohri
Date: Wed, 25 Feb 1998 00:00
11 lines
1132 bytes
こん○○は、モーリ@ITCシステムです。

佐藤正宏 さん、RES有り難う御座います。
大変参考になりました。
これをもとにたとえば半角40文字全角20文字の入力制限に
発展させたいと思います。

*************************************************
                毛 利 邦 是  E-mail : mouri@itc-system.co.jp
*************************************************
Re: 標準のコンボボックスでの入力文字数制限に付いて
#575
Author: AKIYA Saburou
Date: Wed, 25 Feb 1998 00:00
17 lines
1228 bytes
穐谷(あきや)です。

Takeshi Shigihara  wrote in article
 <34F3F800.57516BB0@masternet.or.jp>...
> > VB5の標準のコントロールのコンボボックスで、
> > .Styleが0(ドロップダウンコンボ)のとき、入力する文字数を
> > 制限するにはどうしたらよろしいのでしょうか?
> APIなら、 CB_LIMITTEXT というメッセージがあるのですが、
> こっちはVBを知らないもんで、VBでは、どう使うのか分かりません(^^;

それをAPI関数のSendMessageで送りましょう。


------------------------------------------------------------
		差出人:	穐谷 三郎
		E-Mail:	akiya@cmpk.or.jp
Re: 標準のコンボボックスでの入力文字数制限に付いて
#577
Author: Sato Masahiro
Date: Wed, 25 Feb 1998 00:00
21 lines
1337 bytes
In article <6d0tk4$1l9$1@nn-os001.ocn.ad.jp>, Kuniyoshi Mohri wrote:
>これをもとにたとえば半角40文字全角20文字の入力制限に
>発展させたいと思います。

ごめんなさい、こちらについては Shigihara さんの

In article <34F3F800.57516BB0@masternet.or.jp>, Takeshi Shigihara wrote:
>APIなら、 CB_LIMITTEXT というメッセージがあるのですが、

を元に、

SendMessage Combo1.hwnd, CB_LIMITTEXT, 40, 0

などととしてみたところ、あっさりできてしまいました。
簡単ですし、特に異常が起こらないようであるならば、
こちらの方法をお勧め致します。

-- 
Computer Institute of Japan, Ltd.
佐藤正宏 masahiro@cij.co.jp
Re: 標準のコンボボックスでの入力文字数制限に付いて
#578
Author: Yuji Tagawa
Date: Wed, 25 Feb 1998 00:00
24 lines
1614 bytes
田川@イントラネットシステムです。

Kuniyoshi Mohri wrote in message <6d0k75$r2i$1@nn-os001.ocn.ad.jp>...
>こん○○は!モーリ@ITCシステムです。
>VB5の標準のコントロールのコンボボックスで、
>.Styleが0(ドロップダウンコンボ)のとき、入力する文字数を制限するに
は
>どうしたらよろしいのでしょうか?


標準ではないのですが、参考までに

VB Magazine の付録のCDに入っている Excombo.OCX という OCX を
使うと、LimitText というプロパティのついたコンボボックスを使える
ようになります。各項目のフォントや色も変更できます。
\1000 のシェアウェアです。

全角文字は2文字として数えているようです。(バイト数を返している?)
----
    〒105  港区芝大門2-5-5 住友芝大門ビル9F
    イントラネットシステム株式会社 IT部
    田川  勇治  (Email: yujit@intranet.co.jp)
    (TEL: 03-5403-2688(Ext.537)    FAX: 03-5403-0940)
Re: 標準のコンボボックスでの入力文字数制限に付いて
#580
Author: よろずや kin-chan
Date: Wed, 25 Feb 1998 00:00
18 lines
1323 bytes
こんにちは よろずや kin-chan です

Kuniyoshi Mohri <na201599@fsinet.or.jp> wrote in article
<6d0k75$r2i$1@nn-os001.ocn.ad.jp>...
> こん○○は!モーリ@ITCシステムです。
> VB5の標準のコントロールのコンボボックスで、
>
.Styleが0(ドロップダウンコンボ)のとき、入力する文字数を制限するに
は
> どうしたらよろしいのでしょうか?

KeyPressとかを使ってやってみようとしたことはありますが、右クリックで
貼り付けとかされたらどうもうまくないので、結局内部で処理するときに
左から必要文字数だけを使うという手で逃げました。
Unicode を考慮すると Left関数は使えず、自前で関数を作りました。:-)

では
Re: 標準のコンボボックスでの入力文字数制限に付いて
#443
Author: Kuniyoshi Mohri
Date: Thu, 26 Feb 1998 00:00
11 lines
1098 bytes
こん○○は!モーリ@ITCシステムです。

佐藤正宏さん、Takeshi  Shigiharaさん、穐谷(あきや)さん、
田川  勇治さん、よろずや kin-chanさん
どうも有り難う御座いました。
大変勉強になりました。

*************************************************
                毛 利 邦 是  E-mail : mouri@itc-system.co.jp
*************************************************
Re: 標準のコンボボックスでの入力文字数制限に付いて
#444
Author: kamayan
Date: Thu, 26 Feb 1998 00:00
26 lines
1340 bytes
>Private Sub Combo1_KeyPress(KeyAscii As Integer)
>
・・・省略・・・
>
>End Sub
>

Windows95/NT4.0では、コンボボックスの右クリックメニューに、
「貼り付け」もあるので、KeyPressイベントが発生しません。そん
なわけで、Changeイベントを利用するのが良いと思います。

Private Sub Combo1_Change()

    Dim str1 As String
    Dim a As Long

    str1 = Combo1.Text
    a = LenB(StrConv(str1, vbFromUnicode))

    If a > 10 Then  ' 10バイト(S-JIS)に制限する
        ' ここでまたChangeイベントが発生するところがミソ
        Combo1.Text = Left(str1, Len(str1) - 1) 
    End If

End Sub
Re: 標準のコンボボックスでの入力文字数制限に付いて
#458
Author: Sato Masahiro
Date: Fri, 27 Feb 1998 00:00
21 lines
1454 bytes
In article <6d2rls$3el$1@fu2.bekkoame.or.jp>, kamayan wrote:
>Windows95/NT4.0では、コンボボックスの右クリックメニューに、
>「貼り付け」もあるので、KeyPressイベントが発生しません。そん
>なわけで、Changeイベントを利用するのが良いと思います。

なるほど...。

>    If a > 10 Then  ' 10バイト(S-JIS)に制限する
>        ' ここでまたChangeイベントが発生するところがミソ
>        Combo1.Text = Left(str1, Len(str1) - 1) 
>    End If

ただ、このように Combo1.Text を変更する処理を記述して
しまうと、CTRL+Z で元に戻すことができなくなりますよね?
だとすると、ここはやはり CB_LIMITTEXT を送るのが簡単で
良さそうです。

-- 
Computer Institute of Japan, Ltd.
佐藤正宏 masahiro@cij.co.jp
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads