Longueur d'un combobox

Salues!

Je suis en train de controler la longueur d’un ComboBox avec l’event KeyUp:

If me.SelectionStart > 4 then // Limit max. 4 lettres
me.Value = Left( me.Value, 4 )
Else // Changement du text - Majuscule
me.Text = me.Text.Uppercase
End If

Sous Mac ça marche, mais pas sous Windows. Sous windows ça sélectionne tout le text et, n’on peut qu’ecrire 1 lettre

Comme est-ce qu’on peut y arriver sous Windows?

Merci

Me.selectionstart est la position du curseur, pourquoi ne pas utiliser Me.Lenght qui est la longueur du texte ?
Enfin, pas sûr d’avoir compris ton problème.
Sinon, en API2 c’est Me.left(4)

1 Like

La longueur est contrôlée, mais le cas est quand on arrive à 4 lettres.

Si on continue en écrivant, après la 5e touche, on sélectionne le texte complet, et après la 6e un nouveau texte est introduit.

Le cas est que je ne trouve pas, disons, l’option de désélectionner le texte. Sous Mac, après écrire 4 lettres, on a l’effect de ne pouvoir plus continuer Soit si on limite la longueur aussi comme changer les lettres de minuscule à majuscule

Ceci fonctionne sur Mac et Windows :

If me.Value.Length > 4 then // Limit max. 4 lettres
   me.Value = me.Value.Left( 4)
Else // Changement du text - Majuscule
   me.Value = me.Value.Uppercase
End If
me.SelectionStart = me.Value.Length

Effectivement le comportement sous Windows est bizarre…

1 Like

Merci pour la review.

Finalement, ce que je vais faire c’est limiter le max. sous KeyUp et applier l’event Lost focus pour Win pour les majuscules, et le code complet sous l’event KeyUp pour Mac

:worried:

1 Like

si j’ai bien compris, tu veux limiter le texte a 4 caractères , mettre en majuscule et sélectionner l’ensemble

Ce code devrait suffire:

 me.Value = me.Value.Left( 4)
me.Value = me.Value.Uppercase
me.SelectionStart = me.Value.Length

JL
1 Like

On a bien compris

Le problème est que ça marche parfait sous Mac.
Si on utilise le même code sous Windows, on ne peut qu’écrire 1 lettre.
Par example:

  • j’ecris “a”
  • on transforme en “A” et “A” reste toute sélectionnée
  • on écrit “b”
  • “b” se transforme en “B”, mais le ComboBox devienne “B” pas “AB”

Le code que j’ai posté fonctionne parfaitement sur Mac et Windows.

OK

Après avoir isolé (dans un nouveau projet) j’ai vu que ça marche. Le comportement bizarre est aussi tôt qu’on utilise la propriété “Allow Auto Complete

Alors je me demande, si sous cette condition me.SelectionStart doit faire le travaille, et ça marche en Mac…est-il un comportement bizarre du win, ou du Xojo? (testée avec 2020r2.1) :thinking: