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 :

Composant de saisie de nombre [Lazarus]


Sujet :

Lazarus Pascal

  1. #21
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut
    Bonjour,
    J'utilise depuis longtemps Maskedit au début avec delphi 4 et depuis plusieurs années avec lazarus. Je l'utilise pour saisir des données selon un format et donc des nombres avec des décimales ou pas selon le mask pour le problème de l'emplacement de la virgule et la valeur décimale je reprend l'exemple saisie de 2--,-- j'ai écrit trois fonctions pour régler le problème. Si cela peut-être utile les voici:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    function DeuxDecimales(Entree: String): String;
    var
      virgule,point:Integer;
    begin
    point:=Pos('.',Entree);
      if point<>0 then  // remplacement du point par une virgule
      begin
      Delete(Entree,point,1);
      Insert(',',Entree,point);
      end;
    virgule:=Pos(',',Entree);
      if virgule=0 then Entree:=Entree+',00' // pas de décimale
      else if virgule=Length(Entree) then Entree:=Entree+'00'
           else if virgule=Length(Entree)-1 then Entree:=Entree+'0';
    DeuxDecimales:=Entree;
    end;
     
    function TraitementMasque(Entree: String): String;
    var
      blanc:Integer;
    begin
    // mise en forme résultat d'un MaskEdit numérique, suppression espace avant virgule
    blanc:=Pos (' ',Entree);
      while blanc<>0 do
      begin
      Delete (Entree,blanc,1);
      blanc:=Pos(' ',Entree);
      end;
    TraitementMasque:=Entree;
    end;
     
    function Decimales(Entree: String): String;
    var
      blanc,virgule,point:Integer;
    begin
    // mise en forme résultat d'un MaskEdit numérique, suppression espace avant virgule
    blanc:=Pos (' ',Entree);
      while blanc<>0 do
      begin
      Delete (Entree,blanc,1);
      blanc:=Pos(' ',Entree);
      end;
    point:=Pos('.',Entree);
      if point<>0 then  // remplacement du point par une virgule
      begin
      Delete(Entree,point,1);
      Insert(',',Entree,point);
      end;
    virgule:=Pos(',',Entree);
      if virgule=0 then Entree:=Entree+',00' // pas de décimale
      else if virgule=Length(Entree) then Entree:=Entree+'00'
           else if virgule=Length(Entree)-1 then Entree:=Entree+'0';
    Decimales:=Entree;
    end;
    Elles me sont utiles.
    A+

  2. #22
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Merci Ovni76,

    Juste une question, tu appelles ces fonctions dans quels évènements du TMaskEdit ?

    A+
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  3. #23
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Je pense que je vais m'en remettre aux TSPinEdit.

    J'aurais préférer autre chose, mais bon...

    JS
    Pour ce genre de chose, je me suis créé mon propre dérivé de TEdit, il n'est pas public mais il n'est pas très difficile à écrire, et il répond à tous mes besoin:
    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
     
      public
        { Déclarations publiques }
        function IsEmpty: Boolean; // vide, espace, 0 ...
        function FloatVal: Single; 
        function TimeVal: TDateTime;
        function IsFloat(var Value: Single): Boolean;
        property AsFloat: Single read GetFloat write SetFloat;
        function IsTime(var Value: TDateTime): Boolean;
        property AsTime: TDateTime read GetTime write SetTime;
        function IsError: Boolean;
        procedure SetError(Value: Boolean); // change l'apparence du composant pour indiqué une erreur de saisie
      published
        { Déclarations publiées }
        property Alignment: TAlignment read FAlignment write SetAlignment; 
        property InputType: TInputType read FInputType write SetInputType; // (itText, itNumeric, itTime)
        property Decimal: Char read FDecimal write SetDecimal;
        property Precision: Integer read FPrecision write FPrecision;
        property Required: Boolean read FRequired write FRequired; // associé à un dérivé de TButton qui s'assure que tous les champs requis sont renseignés, sinon Button.ModalResult est ignoré et SetError(True) est appelé
        property Numeric: Boolean read GetNumeric write SetNumeric stored false; // raccourci pour itNumeric
        property Text write SetText; // efface l'erreur éventuelle
    tu passes, disons 2 jours à peaufiner le composant et ensuite tu l'utilises partout avec un gain de temps vraiment non négligeable....et si tu as besoin d'un truc, tu l'ajoutes (OnValidate par exemple) et ce composant unique devient incontournable Et quand tu l'écris toi même tu en as une parfaite maîtrise, et il répond à 100% à ton besoin.

    dans le genre j'ai aussi une virtualListBox une VirtualComboBox qui non seulement sont virtuels mais en plus propose les propriétés comme Required ci-dessus qui me font gagner un temps fou.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #24
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut
    Bonsoir JS,
    J'appelle ces fonctions quand je valide la saisie car dans toutes mes applications (un résultat de mon passé ou je fournissais à mon groupe de travail des applications de gestion de données où je tentais d'éviter les erreurs de saisie) donc l'utilisateur après sa saisie ou le choix dans une liste devait valider sa saisie, j'ai gardé cette habitude donc après l'action sur un bouton valider j'appelle une fonction de contrôle comme celles joint dans mon message.
    A+

  5. #25
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Merci Ovni76 pour ta réponse et tes conseils.

    Je pense que je vais tenter de faire comme Paul TOTH l'a justement fait remarquer. Je vais me lancer dans la création d'un composant de saisie des nombres. J'espère avoir les compétences (en fait, je compte sur vous ).

    Donc, je ne ferme pas ce sujet, car la suite risque d'être difficile et longue, car ce n'est pas un dev prioritaire pour moi en ce moment, ce sera par épisode.

    La suite au prochain épisode...

    A+
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  6. #26
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Bon,

    Voilà c'est fait. Quelques derniers réglages et puis on verra, en tout cas c'est assez fonctionnel pour un début.

    Merci à vous tous

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Empêcher la saisie de nombre ou de caractère
    Par SOPSOU dans le forum Langage
    Réponses: 3
    Dernier message: 28/08/2007, 17h27
  2. Réponses: 2
    Dernier message: 30/04/2007, 14h56
  3. Creation d'un composant pour saisir des nombres
    Par Sylmandel dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 05/06/2006, 10h09
  4. [Composant] Composant de saisie de date
    Par seb_asm dans le forum Composants
    Réponses: 6
    Dernier message: 03/10/2005, 14h36
  5. [JFormattedTextField] Saisie des nombres
    Par n00bi dans le forum Composants
    Réponses: 2
    Dernier message: 20/06/2005, 14h23

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