[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