[Gambas-user] ComboBox.Add method with index, fails

Benoit Minisini gambas at ...1...
Fri May 16 16:25:45 CEST 2008


On vendredi 16 mai 2008, Mike Brett wrote:
> Benoit Minisini wrote:
> > On jeudi 15 mai 2008, Mike Brett wrote:
> >> The syntax for this is given in the Help as
> >>
> >> SUB Add ( Item AS String [ , Index AS Integer ] )
> >>
> >> When I try simply
> >> ComboBox.Add("some text")
> >> there are no errors.
> >>
> >> Whenever I try to add an index, such as
> >> ComboBox.Add("some text", 127)
> >> or even
> >> ComboBox.Add("some text", CInt(127))
> >>
> >> I get
> >> QComboBox::insertItem: (unnamed) Index 127 out of range
> >> QComboBox::setCurrentItem: (unnamed) Index 0 out of range
> >>
> >> What am I doing wrong please?
> >>
> >> Thanks.
> >>
> >> - Mike Brett - (gambas 2.6.0 on Fedora 8)
> >
> > Maybe 127 is greater or equal to the number of items in the ComboBox?
>
> I think I was expecting the combobox's index to be a handle pointing
> towards the entries, whereas it seems to be more of a direct sort order.
> That is, it seems you must have an index 0 entry before you add an index
> 1 entry; further additions must also be continguous.
>
> I had naively misinterpreted the part of the help instructions which
> reads:- "If Index is specified, then the new item is inserted at the
> Index position, 0 being the first item."
>
> I wanted to fill a combobox with text data, and hold associated primary
> key integers from a database as combobox indeces. The PK integers were
> unique but not in gap-free, ascending order.
>
> The combobox will not tolerate:
> * any looping .Add sequence where the index doesn't start at 0
> * any gaps in the index sequence.
>
> So this works:
>
> FOR iC = 0 TO 20
> Combobox.Add ("something", iC)
> NEXT
>
> but causes errors for
>
> FOR iC = 1 TO 20
> Combobox.Add ("something", iC)
> NEXT
>
> and also for
>
> FOR iC = 0 TO 20
> Combobox.Add ("something", iC)
> NEXT
> FOR iC = 30 TO 40
> Combobox.Add ("something", iC)
> NEXT
>
> Somewhat unexpected to me this also fails
>
> Combobox.Add ("something", 1)
> Combobox.Add ("something", 0)
>
> If someone could please confirm this behaviour is all 'as intended' I'll
> move on and simply use an intersection table to map between the combobox
> index and my PKs.
>
> Thanks - Mike -
>

It is intended. The ListBox control works the same way.

-- 
Benoit Minisini




More information about the User mailing list