Bonjour à toute la communauté !

tout d'abord, j'utilise Lazarus 0.9.29 FPC 2.4.2 au cas ou cela pourrait etre le problème.

Je tente de faire une application multi-plateforme Windows, Linux, Mac OS.
Et jusqu'à présent j'arrive à mes fins... Cependant, je rencontre un problème surement tout bête sous Linux.

Dans mes formulaires je suis amené à faire saisie aux utilisateurs des valeurs numériques dans un TEdit que je souhaite limite ainsi.

- Longueur maximum de caractères saisis = 2
- Valeur minimum = 1
- Valeur maximum = 10

J'utilise sous l'evènement 'OnChange' du TEdit, les controles suivants pour satifaire les contraintes de saisie ci-dessus via ce type de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure Form1.MonEditChange(Sender: TObject);
begin
  if (Length(MonEdit.Text)= 0) or (MonEdit.Text='0') Then begin
     MonEdit.Text := '1';
     MonEdit.SelStart :=2;
  end;
 
  if ((Length(MonEdit.Text)= 1) and (MonEdit.Text[1] in ['2'..'9'])) Then MonEdit.SelectAll;
 
  if (Length(MonEdit.Text)= 2) Then begin
    MonEdit.Text:='10';
    MonEdit.SelectAll;
  end;  
End;
C'est probablement pas très propre, mais je débute... Cependant, cela fonctionne très bien sous Windows et Mac Os X en revanche sous linux j'ai l'impression qu'il ne prend pas du tout en compte les .SelectAll ou .SelStart !!
Bref sous linux cela fait n'importe quoi (Ubuntu 10.10 gtk2).

J'ai bien vu (mais trop tard) le TSpinEdit qui a priori correspond mieux à ce que je recherche.

J'ai bien cherché un peu partout... mais j'ai rien trouvé qui pourrait expliquer la différence de comportement.

Si vous pouvez éclairer ma lanterne, je vous en remercie par avance.

Goldor