[Gambas-user] Select an entry in a combo or list box by keypress - Is there a better way.
Ian Roper
ian.roper at ...1974...
Sat Sep 13 09:33:33 CEST 2008
Doriano,
Thank you for your good advice.
I like the timer clear idea especially.
I will also experiment with cursor controls and see if i can make the
code tighter.
Cheers mate,
Ian
On Sat, 2008-09-13 at 09:05 +0200, Doriano Blengino wrote:
> Ian Roper ha scritto:
> > Greetings all,
> >
> > I am looking for a better way to locate and select an entry in a combo
> > or list box by pressing a series of keys.
> >
> > I have been able to do this with the following code but there must be a
> > better way. ?
> >
> > It would be nice to have this as a standard method for these sort of
> > controls. :)
> >
> > 'Pressing Esc clears the search string.
> > 'Label_Search displays the current search string.
> >
> > PUBLIC SUB Listbox_KeyPress()
> > DIM Count AS Integer
> > DIM Found AS Boolean
> > DIM SearchLen AS Integer
> >
> > Found = FALSE
> >
> > IF Key.Code = Key.Esc THEN
> > SearchString = ""
> > SearchLen = 0
> > Label_Search.Text = "No Search"
> > ELSE
> > SearchString = SearchString & UCase(Key.Text)
> > SearchLen = Len(SearchString)
> > Label_Search.text = SearchString
> > ENDIF
> >
> > REPEAT
> > IF UCase(Left(Listbox[Count].Text, SearchLen)) = (SearchString)
> > THEN
> > Found = TRUE
> > END IF
> > INC Count
> > UNTIL Found OR (Count = (Listbox.Count - 1))
> >
> > IF found THEN Listbox.index = Count - 1
> >
> > END
> >
> > PUBLIC SUB Listbox_LostFocus()
> >
> > SearchString = ""
> >
> > END
> >
> It think this method is nice, and I think there is no other way to get
> the same result. Perhaps I only would add that, if the user presses
> cursor key movements, then the search string is cleared (what happens if
> the user presses key down a few times? I think an inconsistency shows
> up, because the search string shows something, and the combobox shows
> something else).
> If you experience some strange behaviour, try to use "STOP EVENT"
> somewhere before exiting the keypress handler.
>
> I have done something similar some time ago, and I had a timer which,
> after a few seconds (500 ms?) of no typing, cleared automatically the
> search string - this saves the user to press Esc to clear the string,
> but it depends a lot on what kind of application you are writing. Then,
> Benoit said to me that this kind of comparison (if ucase(...) = ....)
> only works with ascii strings, so more specific string comparison
> functions should be used.
>
> It would be nice to have this search intrinsic in combobox, listbox,
> treeview and everywhere many strings are present, but it should be
> excludable, because there can be two problems. First, in some
> application it could be undesirable, or wanted a little different. For
> example, in some application, you can press several times the same key,
> say, "B", and get "Benoit", "Blengino", "Bozo" and so on. The second
> problem is when the listbox has thousands items inside it - it could get
> unresponsive, because the search code can take a few (or many) seconds.
> I don't like long listboxes/comboboxes and I try to manage them in some
> other way if I suspect they can grow too much, but this is my personal
> taste.
>
> These are just my opinions, many users think differently than me...
>
> Best regards,
> Doriano Blengino
>
>
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
More information about the User
mailing list