[Gambas-user] Adding keyboard shortcuts to listbox_keyrelease event
M0E Lnx
m0e.lnx at ...626...
Thu Oct 9 15:25:46 CEST 2008
Modified it and this time it does work
PUBLIC SUB lbTmZone_KeyPress()
DIM i AS Integer
IF Key.text > "z" OR Key.text < " " THEN RETURN ' not searchable
i = lbTmZone.Index
DO
INC i
IF i >= lbTmZone.Count THEN i = 0 'back to top
IF i = lbTmZone.Index THEN RETURN ' no other match found
IF lbTmZone[i].text LIKE Key.Text & "*" THEN
lbTmZone.Index = i
RETURN
END IF
LOOP
Thanks
On Thu, Oct 9, 2008 at 7:57 AM, M0E Lnx <m0e.lnx at ...626...> wrote:
> I can see in my head how this *should* work... but I tried it in my
> project and it doesn't
>
>
> On Thu, Oct 9, 2008 at 1:17 AM, Doriano Blengino
> <doriano.blengino at ...1909...> wrote:
>> M0E Lnx ha scritto:
>>> is there a way to code it in my key_release event?
>>>
>>> On Tue, Oct 7, 2008 at 4:53 PM, Benoit Minisini
>>> <gambas at ...1...> wrote:
>>>
>>>> On mardi 07 octobre 2008, M0E Lnx wrote:
>>>>
>>>>> I have a really long list in a lisbox. I'd like to make it so when I
>>>>> press "s" on the keyboard, it jumps to the first item whose text
>>>>> starts with an "s" or any other letter for that matter.
>>>>>
>>>>> Can someone suggest a way to do this?
>>>>>
>>>>>
>>>> Yes, Qt does that by default, but not GTK+. Again, I need to implement that
>>>> feature in the gb.gtk component.
>>>>
>>>>
>> I don't know if the KeyRelease event is the right one to use (it seems
>> strange to me: why wait for a key release to do something? Normally
>> things happen as soon as a key is pressed...), but surely KeyPress can work.
>>
>> In the KeyPress event of the listbox, start to search for the next item
>> beginning with the letter, with wrap; then move the index.
>> In pseudocode:
>>
>> sub xxx_keypress()
>> dim scan as integer
>>
>> if key.text > "z" or key.text < " " then return ' this key is
>> not "searchable"
>>
>> scan = last.index
>> do
>> inc scan
>> if scan >= last.count then scan=0 ' wrap to the top again
>> if scan=last.index then return ' went where we started off:
>> didn't find another item
>> if last[scan].text like key.text & "*" then
>> ' found another
>> last.index = scan
>> return
>> loop
>> end sub
>>
>> I did not test this snippet but the general idea should work. May be
>> some adjustment is needed...
>> May be this is slow...
>>
>> Regards,
>> Doriano
>>
>>
>> -------------------------------------------------------------------------
>> 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