IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

[Linux] TEdit.SelectAll ou SelStart [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut [Linux] TEdit.SelectAll ou SelStart
    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En effet avec Lazarus 0.9.31 fpc 2.4.3, je reproduis aussi bien sous Ubuntu 10.04 que Ubuntu 10.10 le même comportement (avec un Tedit à Autoselect := False)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.MonEditChange(Sender: TObject);
    begin
     if (Length(MonEdit.Text)= 2) Then MonEdit.SelectAll;
    end;
    ... ne fonctionne pas. Est-ce normal ou pas ? Je n'en sais rien... Il faudrait examiner de plus près le code des Tedits.

    Cependant, à l'extérieur de MonEdit (par exemple à partir d'un Tbutton) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TForm1.Button1Click(Sender: TObject);
    begin
      MonEdit.SelectAll;
    end
    ... fonctionne...

    ...et dans MonEdit lui-même,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.MonEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState
      );
    begin
      if (Length(MonEdit.Text)= 2) Then MonEdit.SelectAll;
    end;
    ... fonctionne également.

    --> A mon avis, comme vous rentrez les données dans le Tedit par le clavier, c'est probablement une solution de contournement de votre problème.

    Cordialement. Gilles
    Dernière modification par Invité ; 06/02/2011 à 10h27.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Par défaut
    Merci à vous Selzig.

    Effectivement en déplaçant le code de contrôle de saisie dans l'event "OnKeyUp" cela semble fonctionner sous Linux...

    Et cela fonctionne aussi sur Windows et Mac OS X.
    Je prends donc cette solution de contournement.

    Merci bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Débat : quelle distribution Linux choisir pour débuter ?
    Par Anonymous dans le forum Distributions
    Réponses: 227
    Dernier message: 18/02/2015, 10h09
  2. [Lazarus] [Linux] Connaître le nombre de caractères dans un TEdit
    Par winow dans le forum Lazarus
    Réponses: 2
    Dernier message: 04/02/2010, 21h21
  3. [Kylix] Le débutant en Kylix et Linux....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 10h37
  4. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo