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 :

procedure pour bloquer des boutons


Sujet :

Delphi

  1. #1
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut procedure pour bloquer des boutons
    Bonjour a tous,

    Par ce dimanche ensoleillé, j'èspere que quelques ames valeureuse se trouvent devant leur ordinateur .

    Je sais que pour bloquer un bouton en delphi, il y a monBouton.enable:=false;

    L'idée en faite, serait de faire une procedure qui bloque/debloque tout les boutons d'une fiche. J'ai pas d'idée du tout.

    Il me semble néanmoins qu'il y a une possibilités en passant scannant tout les elements d'une page, un machin genre "component", je sias c'est tres flou, je l'ai fais il y a longtemps

    Merci

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    Citation Envoyé par Aos
    Il me semble néanmoins qu'il y a une possibilités en passant scannant tout les elements d'une page, un machin genre "component", je sias c'est tres flou, je l'ai fais il y a longtemps

    Merci
    effectivement!
    chaque objet "possesseur" d'autres objets tient une liste des ceux ci avec sa propriété Components. une idée serait donc de parcourir ce tableau et de tester le type de chaque objet.
    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.EtatBoutonsForm( bEtat : Boolean );
    var
      i:Integer;
    begin
      //parcourir tous les objets de la form
      for i:=0 to ComponentCount - 1 do
        //tester la classe de l'objet
        if Components[i] is TButton then
          //modifier sa propriété Enabled s'il s'agit d'un bouton
          TButton(Components[i]).Enabled := bEtat;
    end;
    voilà voilà ...

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour
    c'est vrai il fait très beau!

    essayer quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var
    i       : integer;
    begin     
        For i:=0 to ComponentCount-1 do 
          if Components[i] is Tbutton Then
            Tbutton (Components[i]).enabled := false;
    end;
    à plus

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Une autre solution consisterais à associer tes boutons à une Action.

    Et dans le Update du TAction, tu places ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.Action1Update(Sender: TObject);
    begin
      TAction(Sender).Enabled := bEtat;
    end;
    @+ claudius

  5. #5
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut impeccable!
    Merci a tous, ça marche impeccable.

    Par contre, quand j'essaye de la crée en tant que procedure, ça me marque identificateur non declaré 'compononentCount' et "component".
    Si je place le code sur un bouton directement, ça marche impec.


    CLAUDIUS, je ne connais pas se genre de methode, jamais vu/utiliser donc si tu pouvais m'en dire un peu plus ou me dirigier vers un cours/tuts

    Merci

    ci dessous l'exemple de procedure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure etatButton(sender : TObject;bEtat : Boolean);
    var
      i:Integer;
    begin
      //parcourir tous les objets de la form
      for i:=0 to ComponentCount - 1 do
        //tester la classe de l'objet
        if Components[i] is TButton then
          //modifier sa propriété Enabled s'il s'agit d'un bouton
          TButton(Components[i]).Enabled := bEtat;
    end;

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Parmi les exemples fournit avec Delphi (pour ma part D7) tu as un exemple d'utilisation des actions (avec un TActionList).
    Tu peux y jeter un coup d'oeil.

    Dans le principe tu crées une action, tu lui définis ce quelle doit faire (OnExecute) et quand l'action est disponible (OnUpdate).

    Maintenant tu relies tes contrôles à ton action (Boutons, Eléments de menu, bouton de barre d'outils,...).

    Lorsque l'action n'est pas disponible, tous les contrôles qui lui sont associés sont grisés. Pratique car centralisé !!!

    @+ Claudius

  7. #7
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    aaaaaaaaaaaah ok.

    Ah oui c'est pas mal du tout

    Merci en tout cas

  8. #8
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    re
    tu peux par exemple faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure DisableTousLesBouton(Sender: TObject);
    var
    i       : integer;
    begin     
        For i:=0 to sender.ComponentCount-1 do 
          if Components[i] is Tbutton Then
            Tbutton (Components[i]).enabled := false;
    end;
    et ensuite l'appeler à partir d'une autre procédure par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DisableTousLesBouton(Form2); // ou tout autre objet, panel par exemple
    à plus

  9. #9
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    ah je pensais que ça marcherait mais finalement ça ne marche pas
    Il me mets toujours la meme erreur. Identifcateur non declaré "componentcount" et components

  10. #10
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Aos
    Identifcateur non declaré "componentcount" et components
    Essaye avec Self.ComponentCount pour faire référence à ta fiche.

    @+

  11. #11
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Avec Self ça ne marche pas non plus.
    Ca fonctionne si je mets form1.componentCount.

    Je crois que je vais rester comme ça. ça m'embete un peu car je voulais le mettre dans une unité avec le reste des procedures et fonctions.

    M'enfin bon, c'est mieux que rien lol

    reMerci

  12. #12
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    est ce que par hasard tu n'essaierais pas d'écrire le code dans une procédure non membre de la classe de ta form ?

    en utilisant une procédure membre de la classe de la form celà marche impec !

  13. #13
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    petite correction au code de banban54

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure DisableTousLesBouton(Sender: TObject);
    var
      i: integer;
    begin
      if Sender is TComponent then//Components et ComponentCount disponibles pour les descendants de la classe TComponent
      with Sender do
        For i:=0 to ComponentCount-1 do 
           if Components[i] is Tbutton Then
             Tbutton (Components[i]).enabled := false;
    end;
    tu devrais pouvoir t'en sortir avec ça.

  14. #14
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    L'idée en faite, serait de faire une procedure qui bloque/debloque tout les boutons d'une fiche
    Il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyForm.enabled:=True/false;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  15. #15
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par Graffito
    Il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyForm.enabled:=True/false;
    si c'est la seule form affichée on va au devant de problèmes non ?

    et puis je crois qu'il ne s'agit que des boutons, pas de toute la form.

  16. #16
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    @evarisnea
    c'est toujours bon à prendre

    @Graffito
    il n'y a qu'à faire un mixe avec BEtat précedent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure DisableTousLesBouton(Sender: TObject;bEtat : Boolean);
    var
      i: integer;
    begin
      if Sender is TComponent then//Components et ComponentCount disponibles pour les descendants de la classe TComponent
      with Sender do
        For i:=0 to ComponentCount-1 do 
           if Components[i] is Tbutton Then
             Tbutton (Components[i]).enabled := bEtat ;
    end;
    ( je sens que je vais poster un peu tard!!)

    à plus

  17. #17
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    La derniere procedure me genere toujours cette meme erreur "identificateur non declaré" pour componentCount et component.

    Par contre, celle-ci marche impeccable (meme en procedure normal).
    Le probleme etant que je ne puisse pas la mettre dans une unité et la rendre plus complete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
    i       : integer;
    begin
        For i:=0 to form1.ComponentCount-1 do
          if form1.Components[i] is Tbutton Then
            Tbutton (form1.Components[i]).enabled := false;
    end;

  18. #18
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    De plus l'erreur doit etr assez louche parce que meme le code suivant me genere une erreur "identificateur non declaré" mais bon TFORM cette fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure DisableTousLesBouton(Sender: TObject;bEtat : Boolean;maForm:TForm);
    var
      i: integer;
    begin
      if Sender is TComponent then//Components et ComponentCount disponibles pour les descendants de la classe TComponent
      with Sender do
        For i:=0 to ComponentCount-1 do 
           if maForm.Components[i] is Tbutton Then
             Tbutton (maForm.Components[i]).enabled := bEtat ;
    end;

  19. #19
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    je dirais que c'est tout à fait normal !
    l'identificateur doit être le nom que tu as donné à ta form (propriété Name), et la procédure doit se trouver dans la fiche contenant ta form, ou toute autre fiche accédant à cette fiche là.

    bon déjà comment utilises tu cette procédure ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure DisableTousLesBouton(Sender: TObject);
    var
      i: integer;
    begin
      if Sender is TComponent then//Components et ComponentCount disponibles pour les descendants de la classe TComponent
      with Sender do
        For i:=0 to ComponentCount-1 do 
           if Components[i] is Tbutton Then
             Tbutton (Components[i]).enabled := false;
    end;
    tu dois l'appeler comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DisableTousLesBouton(MaForm);
    le paramètre MaForm étant le nom donné à ta form, ou le nom du composant contenant les boutons à désactiver.
    vu ?

  20. #20
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Bah oui, on arrive au meme point
    Je voulais mettre cette procedure dans une unité et non dans une FORM.

    Et j'appelle la procedure de façon normal (maProcedure(maForm));

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Regrouper les procédure pour appeler des boutons
    Par Nanit6 dans le forum Excel
    Réponses: 11
    Dernier message: 09/08/2007, 10h35
  2. variable globale pour griser des boutons de commande
    Par ben5985 dans le forum Access
    Réponses: 5
    Dernier message: 24/11/2006, 11h34
  3. Site pour télécharger des boutons
    Par joquetino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 20/06/2006, 11h25
  4. Réponses: 7
    Dernier message: 17/05/2006, 14h49
  5. utiliser des morceaux d'une image pour faire des boutons
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 14/12/2005, 00h05

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