Link to home
Start Free TrialLog in
Avatar of hirak1977
hirak1977

asked on

Text box - Limit to list

Hi,
I need to limit the entry in the textbox to the list only. So that if user types somethign into textbox that's not in the list, it should pop up errro while tabing out from that control. I know, access has property called "limit to list". Just need to find same for VB.

Thanks!
Hirak
Avatar of diegojserrano
diegojserrano

in vb you will have to write that behavior.
i think you may better use a combobox  with style = dropdowncombo
Avatar of hirak1977

ASKER

I m using the same style - dropdowncombo.

Avatar of sirbounty
Can you use a combo box instead?
Set the style to Dropdown list - then the user can only select what's in the list - not type in anything...
No I can not do that either. I have written the behaviour to narrow down the list as you type in the combo box. I had to do it bcoz some of users wanted to type in rather than scrolling down to select from 10000 items.

Is it a text box or combo box?
OH my bad!! It's my mistake. It's combo box.
Okay - now I guess I'm really confused...

You have a combo box that you can't set to drop down list that you want to prevent users from entering text into?
Yes, that true. Thing is when you set combo box to drop down list. you can just type in first character.It just looks for first character. With my below code, you can type in as many character you want.  But problem is I want it to give me an error if some types in wrong entry which is not in the list and still tries to save data.


Private Sub load_KeyPress(KeyAscii As Integer)
Dim CB As Long
    Dim FindString As String

    If KeyAscii < 32 Or KeyAscii > 127 Then Exit Sub

    If load.SelLength = 0 Then
        FindString = load.Text & Chr$(KeyAscii)
    Else
        FindString = Left$(load.Text, load.SelStart) & Chr$(KeyAscii)
    End If

    CB = SendMessage(load.hwnd, CB_FINDSTRING, -1, ByVal FindString)

    If CB <> CB_ERR Then
        load.ListIndex = CB
        load.SelStart = Len(FindString)
        load.SelLength = Len(load.Text) - load.SelStart
    End If
    KeyAscii = 0
End Sub

ASKER CERTIFIED SOLUTION
Avatar of sirbounty
sirbounty
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
POINT ARE YOURS,
THANKS!
POINT ARE YOURS,
THANKS!
POINT ARE YOURS,
THANKS!
Well, thank you, thank you, thank you...
:D