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

 Delphi Discussion :

TMaskEdit et conversion


Sujet :

Delphi

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut TMaskEdit et conversion
    Bonjour,

    Je développe une application utilisant 3 MaskEdit.
    Dans ceux-ci des masses en kilos ou Livres sont saisies au format : 000 000

    1°) Si je souhaite entrer 88 000 dans l'un de ces edits, il me met 880 000.
    Comment Corriger ce défaut?.

    Les valeurs contenues dans ces edits sont enregistrées dans un fichier texte à la fermeture du programme et rechargées à sa réouverture. (Ce point fonctionne bien).

    Deux fonctions simples convertissent les kilos en Livres et inversement.
    Seulement, le résultat de ces conversions n'affiche que XX dans les maskedits.

    2°) Comment puis obtenir un affichage correct des valeurs converties?

    Espérant avoir été assez clair, je vous remercie de vos conseils et idées.

    Cordialement
    Pierre

  2. #2
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Salut

    J'ai toujours constaté que les MaskEdits étaient difficiles a gérer. Ce que je te conseille, est d'utiliser un Edit simple, avec son évenement OnKeyDown. Dans ton cas, tu ne souhaite pouvoir rentrer que des chiffres, le code serait donc assez simple ...

    Bonne chance

    Mick605

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Merci de ce conseil que j'ai suivi et qui s'avère plutôt intéressant.

    Cordialement
    Pierre

  4. #4
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Pas de problème ! Dans ce cas, coche dans la discussion ... Tu peux aussi poster ton code, pour que cela serve aux suivants !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Ok,

    Je suis revenu au TEdit, mais je voudrais y saisir des chaines soit de format:
    XX XXX, soit: XXX XXX.
    Je ne sais pas trop comment.

    De plus voudrais ensuite que ces chaines soient converties en entier pour traitement, mais l'espace me joue des tours.

    Merci
    Pierre

  6. #6
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Ah, je n'avais pas compris que tu voulais absolument l'espace dans ta chaine ... Je ne sais pas si l'utilisation du MaskEdit est la meilleure, puisque ta chaine n'a pas forcément la même longueur ...

    Dans le cas ou tu utiliserai un simple Edit, je vois 3 solutions :
    - Tu laisse taper ce que tu veux a l'utilisateur, et tu valides sa chaine quand il a fini (par exemple, dans le OnExit du Edit)
    - Tu peux controler un peu la saisie de l'utilisateur, et ajouter toi même les espaces quand la saisie est terminée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    procedure TForm1.Edit2Enter(Sender: TObject);
    begin
      Edit2.Text:=ReplaceStr(Edit2.Text,' ','');
      Edit2.SelectAll;
    end;
     
    procedure TForm1.Edit2Exit(Sender: TObject);
    var t : string;
    begin
      t:=Edit2.Text;
      if Length(t)>3 then
        Edit2.Text:=Copy(t,0,Length(t)-3)+' '+Copy(t,Length(t)-3+1,MaxInt)
      else
        Edit2.Text:=t;
    end;
     
    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (Key in ['0'..'9',#8]) then Key:=#0;
    end;
    - Tu peux essayer de formatter ta chaine en temps réel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var t :string;
        s : integer;
    begin
      if (Key in ['0'..'9']) then
      begin
        if (Length(Edit1.Text)-Edit1.SelLength)<7 then
        begin
          Edit1.SelText:=Key;
          s:=Edit1.SelStart;
          t:=Edit1.Text;
          t:=ReplaceStr(t,' ','');
          if Length(t)>3 then
            Edit1.Text:=Copy(t,0,Length(t)-3)+' '+Copy(t,Length(t)-3+1,MaxInt)
          else
            Edit1.Text:=t;
          Edit1.SelStart:=s+1;
        end;
      end;
     
      Key:=#0;
    end;
    Pour effacer les espaces, utilise la fonction ReplaceStr.

    J'espere avoir été utile.

    Bonne chance ...

    Mick605

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Par défaut
    Merci mille fois, j'ai utilisé une solution proche de la première que tu me donne.

    Tout fonctionne parfaitement.

    Encore merci

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

Discussions similaires

  1. Conversion Assembleur Motorola 68xxx en Intel 80xxx
    Par markham dans le forum Autres architectures
    Réponses: 3
    Dernier message: 22/11/2002, 20h09
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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