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

IHM Discussion :

Masquer tous les controle à l'ouverture d'un formulaire


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut Masquer tous les controle à l'ouverture d'un formulaire
    Bonjour,

    Je voudrai à l'ouverture de mon formulaire masquer tous les controle pour les afficher selon le choix d'une liste déroulante.
    Bon ce n'est pas difficile à faire en écrivant le chemin du control comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monform.monchamp.visible = false
    .
    Mais c'est super long quand tu as trop de control.
    J'ai voulu le faire avec une boucle mais il me dis qu'il ne peut pas masquer les controles actif.
    Voila mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim ctrl As Control
     
        For Each ctrl In [sfrm-Code-Article].Form![sfrm-Conduite].Controls
            If ctrl.Name Like "*Btl" Then
            ctrl.Visible = False
            End If
        Next
    est-ce que quelqu'un connais une solution pour mon problème.
    Ca m'éviterai des lignes et des lignes de code.

    Merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    Il faut que je rende le control inactif.
    J'ai pensé mettre le focus sur un autre control mais ca na pas l'air de marcher.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    bon j'ai trouvé une solution mais j'ai un autre problème.
    Voici mon 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
    Dim ctrl As Control
    Dim c As String
     
        For Each ctrl In [sfrm-Code-Article].Form![sfrm-Conduite].Controls
            If ctrl.Name Like "*Btl" Then
            With ctrl
                Select Case .ControlType
                Case acTextBox
                      .Enabled = False
                      .Visible = False
                Case acLabel
                    .Visible = False
               End Select
            End With
            End If
     
            'ctrl.Caption = w
        Next
    On ne peut pas appliquer le enable à un control.
    Avec ce code c'est possible.
    Le problème c'est qu'il me dis que je ne peux pas désactiver un control actif.
    Grrrrr!!
    Il va me faire péter les plombs.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    Bon voila la solution.
    Il faut mettre tout les controle invisible par la propriété (clic droit).
    Puis avec se code ca marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        For Each ctrl In [sfrm-Code-Article].Form![sfrm-Conduite].Controls
        If Me.Groupe = "Groupe 3" Or Me.Groupe = "Groupe 4" Or Me.Groupe = "Groupe 5" Or Me.Groupe = "Groupe 6" Then
            If ctrl.Name Like "*Btl" Then
            ctrl.Visible = True
            End If
        Else
            If ctrl.Name Like "*Btl" Then
            ctrl.Visible = False
            End If
        End If
        Next
    Ce qui est bizard c'est que je peux passé du visible à l'invisible et vis versa alors que les controls sont actif.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Points : 135
    Points
    135
    Par défaut
    En fait, c'est effectivement le focus qui te posait problème (j'ai déjà rencontré le problème).

    Il faut alors l'envoyer sur un contrôle qui est toujours visible sur ton formulaire (comme par exemple ta liste déroulante de choix) avant de masquer les contrôles.

    Si ce n'est pas possible car tu veux masquer tous les contrôles, il faut faire comme tu l'as fait : rendre invisible les contrôles directement dans le formulaire et les afficher ou non lors du chargement.

    Pour ce qui est de la bizarrerie, elle s'explique par le fait que le focus se place au chargement du formulaire sur le premier objet disponible suivant l'ordre de tabulation. Donc lorsque ton code s'exécutait, le focus était déjà placé et avait rendu actif un des contrôles. Si aucun objet n'est disponible pour le focus car les champs sont tous invisibles/disabled/locked, il n'y a pas de focus. Or le focus se place au chargement automatiquement, donc si tu rends actifs les contrôles après le chargement il n'y a toujours pas de focus sur le formulaire et tu peux donc les masquer/démasquer sans rencontrer l'erreur.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    Merci pour tes explication.
    J'avais essayé de mettre le focus sur ma liste déroulante mais ca ne marchait pas.
    C'est peu être parce que je voulais masqué tous les contrôle de mon sous-sous-formulaire alors que je mettais le focus sur mon formulaire principale.
    Enfin bon j'ai trouvé une solution qui m'évite des lignes et des lignes de codes c'est le principale.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    Re bonjour,

    J'ai un autre problème lié au problème précédent.
    J'explique mon cas.
    J'ai un formulaire (Frm-Rapport de production) dans lequel j'ai un sous formulaire (frm-Code article) qui contient plusieurs sous formulaires.
    Se sont dans ces sous formulaires que je veux masquer les différents controle.
    Ma boucle dans le message précedent marche pour un sous formulaire mais lorsque je veux qu'il le fasse pour les autres ca ne marche pas car le control Ctrl est déjà utilisé.
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each ctrl In [sfrm-Code-Article].Form![sfrm-Conduite].Controls
            For Each ctrl In [sfrm-Code-Article].Form![sfrm-Freintes-Ejection].Controls
                For Each ctrl In [sfrm-Code-Article].Form![sfrm-Freintes-Prépa].Controls
    Je voudrai éviter de recopier ma boucle en entière 3 fois.
    Est-ce que vous savez comment je pourai faire pour faire ma boucle sur les 3 sous-sous formulaire ou alors sur tout les controle de mon sous formulaire code article?

    Merci

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 106
    Points : 135
    Points
    135
    Par défaut
    Bonjour,

    Il suffit tout simplement de renommer votre variable d'un nom différent pour chaque boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each ctrl In [sfrm-Code-Article].Form![sfrm-Conduite].Controls
            For Each ctrl_2 In [sfrm-Code-Article].Form![sfrm-Freintes-Ejection].Controls
                For Each ctrl_3 In [sfrm-Code-Article].Form![sfrm-Freintes-Prépa].Controls
    For each Nomvariable In Type est une instruction de déclaration de variable donc si vous déclarez 3 fois la même variable dans des boucles imbriquées les unes dans les autres, le programme ne sait plus où il en est.

    cordialement,

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    Merci de t'as réponse mais le problème c'est qu'en dessous de ces lignes j'en ai d'autre qui font appel a CTRL donc si je fait comme tu dis je devrai faire de même pour les autres lignes ce qui reviendrai au même.

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

Discussions similaires

  1. Aplliquer les thème à tous les controles
    Par zooffy dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/03/2007, 14h48
  2. Accés direct à TOUS les controls d'une form
    Par olsimare dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/02/2007, 00h39
  3. Supprimer Tous les controles d'un état
    Par Dafbau dans le forum IHM
    Réponses: 10
    Dernier message: 18/12/2006, 16h38
  4. verrouiller tous les contrôles d'un formulaire
    Par nogood1 dans le forum Access
    Réponses: 3
    Dernier message: 22/08/2006, 12h55
  5. Réponses: 5
    Dernier message: 07/09/2005, 08h27

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