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 :

Pb avec MaskEdit


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut Pb avec MaskEdit
    Bonjour,

    J'ai un champ de saisie (TMaskEdit) et j'ai mis le masque suivant : !###.###.##0,00;1;_

    Mon problème, c'est qu'on est obligé de commencer la saisie par la gauche... Si je veux écrire 5.000,00 par exemple, je dois avancer avec des espaces 5 fois et saisir 500000.

    Alors que je voudrais que l'on commence à écrire à droite et que tout ce décale vers la gauche.

    Quelqu'un a une idée ?

    Cyril.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 837
    Points : 15 262
    Points
    15 262
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Button1Click(Sender: TObject);
    var OldSysLocal:TSysLocale;
    begin
      OldSysLocal:=SysLocale;// pour pouvoir le remettre
      SysLocale.MiddleEast := True;
      Edit1.BiDiMode := bdRightToLeft;
      SysLocale := OldSysLocal;
    end;
    Valable pour un Edit. Jamais essayé avec un MaskEdit.
    HTH,
    --
    jp
    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 du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Peut-être me suis-je mal expliqué...
    Actuellement cela fonctionne ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ___.___.___,__
    1__.___.___,__
    12_.___.___,__
    123.___.___,__
    123.4__.___,__
    123.45_.___,__
    123.456.___,__
    123.456.7__,__
    123.456.78_,__
    123.456.789,__
    123.456.789,0_
    123.456.789,00
    Donc, pour saisir 1234,56, il faut positionner son curseur au bon endroit (X) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ___.__X.___,__
    ___.__1.___,__
    ___.__1.2__,__
    ___.__1.23_,__
    ___.__1.234,__
    ___.__1.234,5_
    ___.__1.234,56
    Or je ne veux pas avoir le truc lourd de devoir positionner le curseur au bon endroit,je veux ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ___.___.___,__
    ___.___.___,_1
    ___.___.___,12
    ___.___.__1,23
    ___.___._12,34
    ___.___.123,45
    ___.__1.234,56
    Merci.

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    J'ai trouvé une solution à peu prêt correct avec la procédure OnKeyUp de mon MaskEdit.

    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
    55
    56
    57
    58
    59
    60
    procedure TFRM_Menu.MskEdt_cliLimitCredKeyUp(Sender: TObject;
      var Key: Word; Shift: TShiftState);
    var
      contenu : String;
      taille : Integer;
    begin
      contenu := MskEdt_cliLimitCred.Text;
      contenu := AnsiReplaceStr(contenu,'.','');
      contenu := AnsiReplaceStr(contenu,',','');
      taille := Length(contenu);
    if Key in [VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, VK_NUMPAD4,
               VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, VK_NUMPAD8, VK_NUMPAD9] then
      case taille of
        0, 1, 2 : ;
        3 : Insert(',',contenu, 2);
        4 : begin
              contenu := AnsiRightStr(contenu, 3)+AnsiLeftStr(contenu, 1);
              Insert(',',contenu, 3);
            end;
        5 : begin
              contenu := AnsiRightStr(contenu, 4)+AnsiLeftStr(contenu, 1);
              Insert(',',contenu, 4);
            end;
        6 : begin
              contenu := AnsiRightStr(contenu, 5)+AnsiLeftStr(contenu, 1);
              Insert(',',contenu, 5);
              Insert('.',contenu, 2);
            end;
        7 : begin
              contenu := AnsiRightStr(contenu, 6)+AnsiLeftStr(contenu, 1);
              Insert(',',contenu, 6);
              Insert('.',contenu, 3);
            end;
        8 : begin
              contenu := AnsiRightStr(contenu, 7)+AnsiLeftStr(contenu, 1);
              Insert(',',contenu, 7);
              Insert('.',contenu, 4);
            end;
        9 : begin
              contenu := AnsiRightStr(contenu, 8)+AnsiLeftStr(contenu, 1);
              Insert(',',contenu, 8);
              Insert('.',contenu, 5);
              Insert('.',contenu, 2);
            end;
       10 : begin
              contenu := AnsiRightStr(contenu, 9)+AnsiLeftStr(contenu, 1);
              Insert(',',contenu, 9);
              Insert('.',contenu, 6);
              Insert('.',contenu, 3);
            end
      else
        begin
          contenu := AnsiRightStr(contenu, 10)+AnsiLeftStr(contenu, 1);
          Insert(',',contenu, 10);
          Insert('.',contenu, 7);
          Insert('.',contenu, 4);
        end;
      end;
        MskEdt_cliLimitCred.Text := contenu;
    end;
    Cela fonctionne correctement mais, en contrepartie, je n'ai pas trouvé le nom des touches numériques du claviers... Dans l'aide, il y a seulement de nom des touches du pavé numérique... Quelqu'un sait où les trouver ?

    Cyril

Discussions similaires

  1. [Débutant] Saisie avec MaskEdit
    Par microbe83 dans le forum C++Builder
    Réponses: 0
    Dernier message: 13/12/2014, 11h53
  2. Problème avec maskedit
    Par salimo79 dans le forum Débuter
    Réponses: 2
    Dernier message: 13/03/2010, 10h27
  3. Réponses: 2
    Dernier message: 21/05/2007, 09h24
  4. probleme avec les MaskEdit
    Par manplum dans le forum C++Builder
    Réponses: 1
    Dernier message: 24/04/2007, 22h53
  5. Grid avec maskedit et comboBox
    Par vodasan dans le forum Delphi
    Réponses: 3
    Dernier message: 10/11/2006, 13h39

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