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

Composants VCL Delphi Discussion :

bouton à double fonction


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 16
    Par défaut bouton à double fonction
    Bonjour ! Voilà, je viens de commencer le delphi depuis une semaine et depuis hier matin je bloque sur un simple bouton récalcitrant. Il est censé, clic 1, faire telle chose et clic 2, faire autre chose. voici le code :

    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
     
    procedure TForm3.Button2Click(Sender: TObject);
     
    label
     
      Switch;
     
    var
     
      ButSwitch: string;
     
    begin
     
      if ButSwitch=''
     
        then goto Switch;
     
      ButSwitch:='';
     
      (fonctions, fonctions, fonctions...)
     
      Button2.Caption:='Appliquer';
     
      Switch:
     
      ButSwitch:='func2';
     
      (fonctions, fonctions, fonctions...)
     
      Button2.Caption:='Rétablir';
     
    end;

    Sauf que, j'ai beau bombarder mon bouton Appliquer/Rétablir, il reste sur Appliquer et ne fait rien du tout ! j'en ai donc conclu que les variables étaient effacées à la fin d'une procédure.

    Quelqu'un a une solution de rechange ? Merci !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 74
    Par défaut
    Bon Delphi n'est pas du basic, pas de GOTO

    Par contre je ne vois pourquoi tu as cree la variable: ButSwitch ?

    De plus qu'as tu voulu dire en mettant en commentaire (fonctions, fonctions, fonctions...) ?

    Essaye cela:
    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
    procedure TForm3.Button2Click(Sender: TObject);
    begin
     
      if Button2.caption = ''
      then Begin
            Switch;
            Button2.Caption:='Appliquer';
      end;
     
      if Button2.caption = 'Appliquer'
      then Begin
            Switch;
            Button2.Caption:='Rétablir';
      end;
     
    end;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 16
    Par défaut
    Bonjour Aodrenn!

    Par contre je ne vois pourquoi tu as cree la variable: ButSwitch ?
    Je ne savais pas que deux groupes de procédures pouvaient être insérées dans un seul begin!

    De plus qu'as tu voulu dire en mettant en commentaire (fonctions, fonctions, fonctions...) ?
    Ce serait trop long de mettre tout le code dans ce post!

    Je vais essayer ça !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 16
    Par défaut
    Génial, ça marche !

    Merci Aodrenn !

  5. #5
    bjl
    bjl est déconnecté
    Membre chevronné Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Par défaut
    bonjour, je dirais plutôt de mettre un Else if sur la 2ème condition

    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
    procedure TForm3.Button2Click(Sender: TObject);
    begin
     
      if Button2.caption = ''
      then Begin
            Switch;
            Button2.Caption:='Appliquer';
      end
     
      else if Button2.caption = 'Appliquer'
      then Begin
            Switch;
            Button2.Caption:='Rétablir';
      end;
     
    end;
    sinon, il n'y aura pas besoin d'un second click pour passer à "rétablir"

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 74
    Par défaut
    Oui bien sur tu as raison
    Ou avais la tete????


    Mais on peut encore simplifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm3.Button2Click(Sender: TObject);
    begin
     
      Switch;
     
      if Button2.caption = ''
      then  Button2.Caption:='Appliquer';
      end if Button2.caption = 'Appliquer'
      then  Button2.Caption:='Rétablir';
     
    end;

  7. #7
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Une autre méthode consiste à utiliser la propriété Tag du bouton.

    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
     
    procedure TForm3.Button2Click(Sender: TObject); 
    begin 
     
      if sender is TButton then
         begin
         with  (sender as TButton) begin
          case Tag of 
             case 0: 
                begin
                Tag := 1;
                Caption := 'Rétablir';
                // Autres traitements spécifiques
                end;
            case 1:
                begin
                Tag := 0;
                Caption := 'Appliquer';
                // Autres traitements spécifiques
                end;
           end;            
     
    end;
    Je jette l'idée sans pouvoir la compilée, mais le principe y est.
    Avantage? Dans l'autre version, si tu veux faire une application multi-linguiste, tu auras des petist soucis.

  8. #8
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Euh moi je ferais encore plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm3.Button2Click(Sender: TObject); 
    begin 
      Switch;
      if Button2.Caption = 'Appliquer' then
        Button2.Caption := 'Rétablir'
      else
        Button2.Caption := 'Appliquer';
    end;
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  9. #9
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    enfin vu que grid93 a des (fonctions) (fonctions) (fonctions) à mettre en code derrière son bouton inutile de simplifier à outrance en enlevant les bloc begin / end, il en aura besoin !

    pour finir ça donne donc

    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
    procedure TForm3.Button2Click(Sender: TObject);
    begin
     
      if Button2.caption ='Rétablir'  then 
      Begin
        Button2.Caption:='Appliquer';
        //Insérer ici les fonctions
      end
      else  if Button2.caption = 'Appliquer'  then 
      Begin
        Button2.Caption:='Rétablir';
        //Insérer ici les fonctions
      end;
     
    end;
    NB : la solution avec le Tag est en effet une très bonne idée pour une application multilangues.

Discussions similaires

  1. [AC-2003] bouton double fonction?
    Par chuspyto dans le forum IHM
    Réponses: 5
    Dernier message: 18/09/2012, 21h57
  2. bouton avec double fonction
    Par maria84 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2011, 16h20
  3. bouton à double fonction pour Clé USB
    Par nicomax34 dans le forum Intégration
    Réponses: 0
    Dernier message: 01/07/2009, 11h34
  4. [VB2005] Comment créer un bouton double fonction
    Par crashdown31 dans le forum Windows Forms
    Réponses: 13
    Dernier message: 18/09/2006, 08h14
  5. [Bouton] Comment déplacer un bouton en fonction du scrolling
    Par Kylen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2005, 12h25

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