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. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 382
    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 382
    Points : 9 744
    Points
    9 744
    Par défaut Composant de saisie de nombre
    Bonjour,

    tout est dans le titre. Quelqu'un connait-il un bon composant permettant la saisie de nombre (entier, réel). Je cherche pas un truc compliqué, juste pouvoir saisir des nombre !

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

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Salut,

    Citation Envoyé par Jon Shannow Voir le message
    Bonjour,

    tout est dans le titre. Quelqu'un connait-il un bon composant permettant la saisie de nombre (entier, réel). Je cherche pas un truc compliqué, juste pouvoir saisir des nombres !

    Merci d'avance
    JS
    j'aillais te proposer un bête TEdit avec sa propriété NumbersOnly basculée à True sauf que je viens de tester, par acquis de conscience et que... ça ne fonctionne pas !

    Pourtant il me semblait avoir repéré cette propriété et l'avoir trouvée sympathique mais ce soir, makache bonno et walou, je peux saisir n'importe quoi dans l'Edit.

    Ou alors ça fonctionne mieux en 1.6 ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut
    Bonsoir

    @JP
    je viens de tester Edit avec la version 1.6 RC2 et ça a bien fonctionné!!

    Nom : Nombre.png
Affichages : 445
Taille : 25,7 Ko
    merci

  4. #4
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonjour

    Avec la 1.6 Stable sous Linux, la propriété NumbersOnly semble sans effet.
    Vous étiez sous d'autres systèmes, je suppose ?
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Salut,
    Citation Envoyé par tintinux Voir le message
    Bonjour

    Avec la 1.6 Stable sous Linux, la propriété NumbersOnly semble sans effet.
    Vous étiez sous d'autres systèmes, je suppose ?
    Confirmé, en ce qui me concerne :
    Testé à l'instant dans deux machines virtuelles le même environnement (Laz 1.6rc1 et non, je ne migrerai pas tant que ça sera aussi merdique) : dans XP ça fonctionne tip-top et dans Debian 32bits tu peux saisir n'importe quoi dans le TEdit...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser TSpinEdit et TFloatSpinEdit du volet Misc ? Ils permettent à la fois l'usage de la souris et celui du clavier.
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  7. #7
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 382
    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 382
    Points : 9 744
    Points
    9 744
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Salut,


    Confirmé, en ce qui me concerne :
    Testé à l'instant dans deux machines virtuelles le même environnement (Laz 1.6rc1 et non, je ne migrerai pas tant que ça sera aussi merdique) : dans XP ça fonctionne tip-top et dans Debian 32bits tu peux saisir n'importe quoi dans le TEdit...
    J'ai testé également, sous Windows 10 64 bits avec Lazarus 1.6 32 bits, ça fonctionne SAUF que l'on ne peut saisir QUE des chiffres (0..9) pas de "," ou "." pas de "+" ou "-" ! Bref, c'est bien pour des zones entières non signées !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  8. #8
    Membre éclairé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    Par défaut
    Bonjour!

    Avec la 1.6 Stable sous Linux, la propriété NumbersOnly semble sans effet.
    Vous étiez sous d'autres systèmes, je suppose ?
    J'ai oublié de préciser que j'utilise W7 32

  9. #9
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Salut,
    Confirmé, en ce qui me concerne :
    Testé à l'instant dans deux machines virtuelles le même environnement (Laz 1.6rc1 et non, je ne migrerai pas tant que ça sera aussi merdique) : dans XP ça fonctionne tip-top et dans Debian 32bits tu peux saisir n'importe quoi dans le TEdit...
    Bonjour,

    Le premier objectif de Lazarus est de faire fonctionner le même code d'une manière similaire avec divers OS ; le second est d'imiter au mieux Delphi afin que le code écrit pour ce dernier soit en grande partie réutilisable. Le problème est que ces deux objectifs ne sont pas toujours conciliables facilement.

    Ici, la propriété NumbersOnly est une propriété que connaissent bien Delphi et Windows pour son TEdit natif. Malheureusement, ce n'est pas le cas des autres OS.

    Si l'on décortique le code source en remontant les appels, on obtient ceci (Lazarus 1.6 sous Windows 10 64 bits) :


    • NumbersOnly est une propriété publiée de TCustomEdit dans TEdit :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TEdit = class(TCustomEdit)
      public
        property AutoSelected;
      published
        property Action;
        property Align;
        // d'autres propriétés publiées...
        property NumbersOnly;   
       // idem...
    end;

    • NumbersOnly est une propriété créée par TCustomEdit :


    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
    TCustomEdit = class(TWinControl)
      private
        // ...
        FNumbersOnly: Boolean;
       // ...
      protected
        // ...
        function GetNumbersOnly: Boolean; virtual;
        // ... 
        procedure SetNumbersOnly(Value: Boolean); virtual;
        // ...
      public
        // ...
        property NumbersOnly: Boolean read GetNumbersOnly write SetNumbersOnly default false;
        // ...
      end;
    La méthode intéressante est celle qui fixe la valeur du champ interne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TCustomEdit.SetNumbersOnly(Value: Boolean);
    begin
      if FNumbersOnly <> Value then
      begin
        FNumbersOnly := Value;
        if HandleAllocated then
          TWSCustomEditClass(WidgetSetClass).SetNumbersOnly(Self, Value);
      end;
    end;
    On voit qu'elle fait correctement son travail en changeant le champ privé FNumberOnly si nécessaire puis en appelant la routine de l'OS via son Widget.
    Et c'est là que réside le problème final : les autres OS ne connaissent pas nativement cette fonctionnalité .
    On trouve donc le code suivant pour le widget Windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class procedure SetNumbersOnly(const ACustomEdit: TCustomEdit; NewNumbersOnly: Boolean); virtual;
    définie par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class procedure TWSCustomEdit.SetNumbersOnly(const ACustomEdit: TCustomEdit;
      NewNumbersOnly: Boolean);
    begin
    end;
    ... donc, une méthode vide

    Parallèlement, des paramètres sont créés pour activer ou désactiver des comportements. Ces derniers sont gérés par l'OS :

    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
    procedure TCustomEdit.CreateParams(var Params: TCreateParams);
    const
      AlignmentStyle: array[TAlignment] of DWord = (
    { taLeftJustify  } ES_LEFT,
    { taRightJustify } ES_RIGHT,
    { taCenter       } ES_CENTER
      );
    begin
      inherited CreateParams(Params);
      Params.Style := Params.Style or ES_AUTOHSCROLL or AlignmentStyle[Alignment];
      if ReadOnly then
        Params.Style := Params.Style or ES_READONLY;
      if NumbersOnly then
        Params.Style := Params.Style or ES_NUMBER;
      if not HideSelection then
        Params.Style := Params.Style or ES_NOHIDESEL;
    end;
    Pour Windows, ça fonctionne, mais seulement pour les chiffres (c'est bien Windows qui affiche le message de refus, pas Lazarus ni Free Pascal).

    La seule véritable solution serait de simuler le fonctionnement avec les autres OS, mais ce n'est pas une mince affaire si l'on doit interférer avec eux... Si l'un de vous se sent de le faire, qu'il propose un patch au Bugtracker .
    A terme, il faudra sans doute que Free Pascal et Lazarus prennent plus d'autonomie vis-à-vis de Delphi. On peut aussi imaginer au moins un avertissement du compilateur.

    En attendant, la solution réaliste sera d'employer TSpinEdit et TFloatSpinEdit qui sont dédiés à la saisie des nombres. Après tout, c'est ce qui était recherché initialement, non ?
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  10. #10
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 382
    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 382
    Points : 9 744
    Points
    9 744
    Par défaut
    Je pense que je vais m'en remettre aux TSPinEdit.

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

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

  11. #11
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    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
    Je n'y ai pas pensé tout de suite, mais il est aussi possible d'utiliser TMaskEdit de la palette Additional.
    Il suffit de fournir un masque du genre ####.## pour la propriété EditMask.
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  12. #12
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bonjour cette unité pourras peut-être t'aider elle fait partie de mes petits composants : http://www.developpez.net/forums/d15...ants-pl_beanz/ que je mettrai à jour dès que je disposerai de plus de temps libre.
    bz_numedit.pas
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  13. #13
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 382
    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 382
    Points : 9 744
    Points
    9 744
    Par défaut
    Le Maskedit n'est pas utilisable pour cela à mon sens.

    Merci BeanzMaster, je vais regarder cela dés que possible.
    A+
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  14. #14
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Le Maskedit n'est pas utilisable pour cela à mon sens.
    Salut,

    J'ai fait un test et MaskEdit est tout à fait adapté à la saisie d'un nombre. Il suffit de créer un masque en renseignant la propriété EditMask
    avec, par exemple, 999999999.99;1;_. (On peut augmenter le nombre de chiffres significatifs si on le désire en ajoutant des 9, changer le caractère de masque en changeant _, etc). Un éditeur de propriétés permet les tests.

    Avec la documentation Delphi, on trouve d'autres éléments intégrables au masque, mais je ne les ai pas testés avec Lazarus.

    Cordialement,

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  15. #15
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour ! Qu'est-ce qui est attendu au juste de ce composant ? Parce que si c'est juste pour s'assurer qu'un nombre a été saisi, on peut le faire facilement, non ?

    Par exemple comme ça :

    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
    uses
      RegExpr;
     
    procedure TForm1.Edit1EditingDone(Sender: TObject);
    var
      expr: string;
    begin
      expr := Format(
        '^%s(%s|%s)$',
        [
          '-?',
          '\.\d+',
          '\d+(\.\d+)?'
        ]
      );
      if not ExecRegExpr(expr, Edit1.Text) then
      begin
        ShowMessage('Saisie invalide. Vous devez saisir un nombre.');
        Edit1.Text := '';
      end;
    end;
    Ou plutôt comme ça :

    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
    function IsNumber(const s: string): boolean;
    var
      expr: string;
    begin
      expr := Format(
        '^%s(%s|%s)$',
        [
          '-?',
          '\.\d+',
          '\d+(\.\d+)?'
        ]
      );
      result := ExecRegExpr(expr, s);
    end;
     
    procedure TForm1.Edit1EditingDone(Sender: TObject);
    begin
      if not IsNumber(Edit1.Text) then
      begin
        ShowMessage('Saisie invalide. Vous devez saisir un nombre.');
        Edit1.Text := '';
      end;
    end;
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  16. #16
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 382
    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 382
    Points : 9 744
    Points
    9 744
    Par défaut
    Bonjour,

    Je ne trouve pas très propre l'utilisation du MaskEdit. Je m'explique, si je prends un masque comme 999.99 et que la personne tape 2, à l'affichage ça donne : "2__.__", j'aurais préférer le résultat " 2.00", et si, pour forcer les 0 à la fin, je mets le masque "999.00", j'obtiens une exception si on ne tape que 2 !

    Ce n'est pas qu'une question de tests de la saisie, c'est aussi une question d'esthétique. J'ai jamais compris (et ce depuis Delphi) qu'il n'y ait pas des composants natifs de saisie de nombre !
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  17. #17
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 126
    Points
    15 126
    Par défaut
    Bonjour,

    2 petites remarques :
    Citation Envoyé par Roland Chastain Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Edit1EditingDone(Sender: TObject);
    begin
      if not IsNumber(Edit1.Text) then
      begin
        ShowMessage('Saisie invalide. Vous devez saisir un nombre.');
        Edit1.Text := '';
      end;
    end;
    1- En cas de saisie invalide, tout est effacé donc l'utilisateur ne peut pas savoir où il s'est trompé ; je verrais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Edit1EditingDone(Sender: TObject);
    begin
      if not IsNumber(Edit1.Text) then
      begin
        ShowMessage('Saisie invalide. Vous devez saisir un nombre.');
        //Edit1.Text := '';
        Edit1.SetFocus;
        Edit1.SelStart := Length(Edit1.Text);
        Edit1.SelLength := 0;
        // avec AutoSelect à False sinon le curseur reste à gauche...
      end;
    end;
    En plus, si c'était un long nombre il va lui falloir tout retaper...

    2- Il faudrait rajouter le "+" dans la regexpr autorisant les caractères valides, même s'il n'est habituellement pas saisi, car on ne sait jamais : puisqu'on peut saisir le "-" il faut pouvoir saisir le "+", àmha.
    Je ne vais pas tripoter la regexpr, je risque de tout casser
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  18. #18
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    2- Il faudrait rajouter le "+" dans la regexpr autorisant les caractères valides, même s'il n'est habituellement pas saisi, car on ne sait jamais : puisqu'on peut saisir le "-" il faut pouvoir saisir le "+", àmha.
    Je ne vais pas tripoter la regexpr, je risque de tout casser
    Merci pour tes suggestions.

    Il faut remplacer '-?' par '[+-]?'.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  19. #19
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jon Shannow Voir le message
    Ce n'est pas qu'une question de tests de la saisie, c'est aussi une question d'esthétique. J'ai jamais compris (et ce depuis Delphi) qu'il n'y ait pas des composants natifs de saisie de nombre !
    En faisant une recherche sur le forum anglophone j'ai trouvé ces composants, mais d'après la discussion que j'ai lue ils ne sont pas utilisables avec les versions récentes de Lazarus (je n'ai pas vérifié).
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  20. #20
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 382
    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 382
    Points : 9 744
    Points
    9 744
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    En faisant une recherche sur le forum anglophone j'ai trouvé ces composants, mais d'après la discussion que j'ai lue ils ne sont pas utilisables avec les versions récentes de Lazarus (je n'ai pas vérifié).
    Je te confirme qu'ils ne sont pas utilisables, je les ai installé et désinstallé car ils plantaient Lazarus en conception !
    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 1 sur 2 12 DernièreDernière

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