Crash door combobox

Een combobox geeft de mogelijkheid een gebruiker te laten kiezen uit een lijst van waarden, door een “drop-down” lijst (rolluik-lijst).
bv een combobox met leveranciersnamen: cmbxAlleLeveranciers

Door uit bestaande waarden te laten kiezen vermijd je dat verkeerde of onmogelijke input gebeurt.
Toch crasht je applicatie na gebruik van een combobox?

Je laat de gebruiker terechtkomen op de combobox voor een selectie met de code:

cmbxAlleLeveranciers.SetFocus()
cmbxAlleLeveranciers.Select()

Opvallend: hij kan hier letters intikken. Die komen niet zomaar vanzelf in je data terecht, maar wel in het resultaat van de combobox, bv door code die de keuze opvangt:

cmbxAlleLeveranciers_Change()

Als de gebruiker kiest uit de lijst heb je een change event. Maar ook op het moment dat daar iets ingetikt wordt heb je “change” events.

Als je dan de .Text waarde gebruikt om op te zoeken in de databank,

(waar je denkt dat die enkel kan bestaan uit tekst-waarden uit de lijst):

LeverancierNr = haalLeverancierNr(cmbxAlleLeveranciers.Text)

.. kan je in de problemen komen!

De oplossing: zet de combobox ReadOnly in het schermontwerp
(of met code: cmbxAlleLeveranciers.ReadOnly = TRUE ).

Opgelet! Dan mag je cmbxAlleLeveranciers.Select() niet meer gebruiken (dit is het selecteren voor wijziging van de tekst - wat dus niet meer kan). De SetFocus() is voldoende want de combobox reageert nu anders.
In plaats van cmbxAlleLeveranciers_Change()
gebruik je cmbxAlleLeveranciers_LostFocus()

combox gewoon en ReadOnly
De combobox in die twee uitvoeringen hier:
(uit de gambasdoc documentatie)

Combobox1, de bovenste, is zoals hij standaard gemaakt wordt in de Gambas programmeeromgeving:
- wit tekstveld.
- ReadOnly = FALSE

De tweede, opengeklapt met items zichtbaar, is
- ReadOnly = TRUE
- te herkennen aan de grijze bovenste lijn Item1.

One Response to “Crash door combobox”

  1. Selectie uit een rolluiklijst (combobox) at Gambas.noxqs.org Says:

    […] 2. een tekstveld -of tekst-knop als readonly (zie Crash door combobox). […]

Leave a Reply

You must be logged in to post a comment.