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 :

Activation d'un bouton suite au remplissage d'un MaskEdit


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Activation d'un bouton suite au remplissage d'un MaskEdit
    Bonjour,

    Actuellement en licence 2 Miashs, je bosse sur un projet de jeux vidéo sur Delphi. Notre projet (avec mon collègue) est une sorte de Mastermind.

    Donc notre problème est qu'on voudrait activer un bouton suite au remplissage d'un MaskEdit. Ce n'est pas un problème en sois mais nous voudrions qu'ils ne l'active pas si il y a un quelconques caractère blanc ou vide dans le MaskEdit.

    Voilà le code qu'on as actuellement :

    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
    61
     
    procedure TCVSH.MaskEdit1Change(Sender: TObject);
    Var
    I : Integer;
    Activation : Boolean;
     
    begin
    Activation := False;
     If (Niveau = 0) Then
            Begin
             For I := 1 to 5 Do
                    Begin
                     If (Copy(MaskEdit1.Text,I,1) <> '') Then
                            Begin
                             Activation := True;
                            End
                                                        Else
                            Begin
                             Activation := False;
                            End;
                    End;
            End;
     
     If (Niveau = 1) Then
            Begin
             For I := 1 to 6 Do
                    Begin
                     If (Copy(MaskEdit1.Text,I,1) <> '') Then
                            Begin
                             Activation := True;
                            End
                                                        Else
                            Begin
                             Activation := False;
                            End;
                    End;
            End;
     
     If (Niveau = 2) Then
            Begin
              For I := 1 to 7 Do
                    Begin
                     If (Copy(MaskEdit1.Text,I,1) <> '') Then
                            Begin
                             Activation := True;
                            End
                                                        Else
                            Begin
                             Activation := False;
                            End;
                    End;
            End;
     
      If (Activation = True) Then
            Begin
             BitBtn1.Enabled := True;
            End;
     
    Activation := False;
     
    end;
    La variable Niveau est une variable globale déterminant dans quel niveau de jeu on se trouve. Notre MaskEdit possède déjà un masque prédéterminé via le niveau.
    En général, ça marche bien si je remplis le MaskEdit mais si je remplis le MaskEdit puis que je reviens en arrière et que je supprime un truc et que je laisse vide voir que je laisse un caractère vide entre d'autres caractères, ça ne désactive pas le boutons.
    Help ?! ^^'

    Cordialement,

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    bon jour
    j'ai pas bien comprie votre probleme mai je vous propose un autre programme qui est plus cour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Activation := False;
    // If (Niveau = 0) Then
                    For I := 1 to (5 + noveau)  Do
                    Begin
                   Activation := (Copy(MaskEdit1.Text,I,1) <> '');
                    End;
     
          If (Activation = True) Then
            Begin
             BitBtn1.Enabled := True;
            End 
     
    Activation := False;
    Nb : caractère vide est ' ' pas ''


    A+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    Merci de m'avoir répondu.

    En gros j'ai un bouton qui est, de base, désactivé. Et je veux que celui si s'active quand le MaskEdit est rempli et sans caractère vide ou au contraire qu'il se désactive si il en trouve un.

    A+

  4. #4
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour.

    "... mais si je remplis le MaskEdit puis que je reviens en arrière et que je supprime un truc et que je laisse vide voir que je laisse un caractère vide entre d'autres caractères, ça ne désactive pas le bouton."

    C'est normal, pcq dans ton code OnChange, tu ne désactives plus le bouton dès que celui-ci l'a été.

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If (Activation = True) Then
            Begin
               BitBtn1.Enabled := True;
            End
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BitBtn1.Enabled:= Activation;
    Thierry

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,

    Effectivement, c'était une erreur de débutant.
    Mais cela ne fonctionne pas non plus. J'ai remarqué que c'était le dernier caractère qui était prit en compte et qu'il y avait une erreur dans ma boucle FOR. Alors j'ai essayer de bricoler en ajoutant un compteur de test... Mais cela ne fonctionne guère non plus.

    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
     
    procedure TCVSH.MaskEdit1Change(Sender: TObject);
    Var
    I, J : Integer;
    Activation : Boolean;
    begin
    J := 0;
    Activation := False;
     If (Niveau = 0) Then
            Begin
             For I := 1 to 5 Do
                    Begin
                     If (Copy(MaskEdit1.Text,I,1) <> '') Then
                            Begin
                             J := J + 1;
                            End;
                    End;
     
             If (J = 5) Then
                    Begin
                     Activation := True;
                    End
                        Else
                    Begin
                     Activation := False;
                     J := 0;
                    End;
            End;
     
    BitBtn1.Enabled:= Activation;
    end;
    Voilà ce que ça donne. Peut être que je suis trop dedans et je me rend pas compte du problème...

    J'espère avoir d'autres de vos lumières

    A+

  6. #6
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour.

    Je résume ce que tu veux :
    niveau 0 : 5 caractères, aucun caractère = ' ' (pour rappel, un caractère ne sait pas être = ''. Un caractère "vide", c'est un caractère blanc obtenu par la barre d'espacement ' ').
    niveau 1 : 6 caractères...
    niveau 2 : 7 caractères...

    Je ne sais pas par quel moyen tu modifies le niveau (combobox, radiobutton...) mais tu ajoutes dans ta procedure de niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case Niveau of
                 0: MaskEdit1.EditMask:= 'AAAAA';
                 1: MaskEdit1.EditMask:= 'AAAAAA';
                 2: MaskEdit1.EditMask:= 'AAAAAAA';
              end;
    J'ai pris ici un masque 'A' qui oblige à rentrer un caractère alphanumérique.
    Pour une liste de masques : voir l'aide delphi ou http://docwiki.embarcadero.com/Libra...tils.TEditMask

    Dès lors, ta procedure Change tient en une seule ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TCVSH.MaskEdit1Change(Sender: TObject);
              begin
                   BitBtn1.enabled:= (Pos(' ', MaskEdit1.Text) = 0);
              end;
    La fonction Pos recherche ici le premier caractère espace de l'edit et retourne 0 si espace non trouvé (1 si espace en position 1, ...).

    Bon courage.

    Thierry

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour !

    C'est tout bons ! Ça marche parfaitement. Merci a tous pour ces précieuses informations.
    Je passe le sujet en résolu.

    Cordialement,

  8. #8
    Membre éprouvé Avatar de Simara1170
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Avril 2014
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Delphi
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 423
    Points : 1 155
    Points
    1 155
    Par défaut
    Je vois que c'est résolu, mais pour faire sauter les espaces, la fonction "trim" aide aussi

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

Discussions similaires

  1. Activer un bouton suite à un évenement
    Par soujava dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 15/06/2008, 10h46
  2. Activation d'un bouton en fonction d'une checkbox
    Par zamoto dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/05/2006, 14h19
  3. [Win32] activation d'un bouton
    Par dede92 dans le forum Windows
    Réponses: 2
    Dernier message: 15/04/2006, 11h23
  4. comment activer/desactiver un bouton de controle
    Par OyyoDams dans le forum MFC
    Réponses: 17
    Dernier message: 09/04/2006, 11h15
  5. Réponses: 5
    Dernier message: 19/08/2005, 17h32

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