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

VB.NET Discussion :

Récupérer une form en paramètre pour afficher un button [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut Récupérer une form en paramètre pour afficher un button
    Bonjour,
    Je souhaiterais avoir un petit renseignement, comment puis-je récupérer le paramètre form dans une fonction ?
    Exemple :

    Dans ma FrmMenu je souhaiterais appeler une function qui m'affiche ou pas les menus en fonction de la form.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Private Sub FrmMenu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'appel de la function menuDetail qui me permet d'afficher ou non le button
    Call MenuDetail(ListeMenu,FrmMenu)
        End Sub
    Module.VB

    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
    Sub MenuDetail(ByVal menus As String, mavariable as  .... )
    'j'ai essayer windows.form mais cela ne fonctionne pas, pareil avec du string
     
    If ListeMenu = "commande" Then
     
    'lorsque je rentre FrmMenu cela fonctionne mais je ne trouve pas le type de variable à renvoyer
     
                FrmMenu.GunaAdvenceButton1.Text = "Sources des" & vbCrLf & "commandes"
                FrmMenu.GunaAdvenceButton2.Text = "Commandes" & vbCrLf & "par statut"
                FrmMenu.GunaAdvenceButton3.Text = "Détail des" & vbCrLf & "commandes"
                FrmMenu.GunaAdvenceButton4.Text = "Intégration" & vbCrLf & "fichier imprimeur"
                FrmMenu.GunaAdvenceButton5.Text = "Contrôle des" & vbCrLf & "commandes"
                FrmMenu.GunaAdvenceButton6.Text = "Créer commande" & vbCrLf & "en masse"
     
               ElseIf ListeMenu = "commerce" Then
     
               mavriable.GunaAdvenceButton1.Text = "Référencement"
               mavriable.GunaAdvenceButton2.Text = "Validation"
               mavriable.GunaAdvenceButton3.Text = "Commandes référencées"
               mavriable.GunaAdvenceButton4.Text = "Suivi prospection"
    end if
    end sub
    je vous remercie par avance.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 112
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 112
    Points : 1 617
    Points
    1 617
    Par défaut
    le paramètre sender informe de qui est à l'origine de l'appel de la méthode; mais windows.forms.form (ou plus simplement Form) devrait passer, au pire object et caster ensuite (si tu es bien dans un projet d'application windows Forms).

    Mais utiliser le nom d'un bouton (ou d'un contrôle) directement implique que le bouton (ou contrôle) en question existe

  3. #3
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut Récupérer une form en paramètre pour afficher un button
    Bonjour,

    Je te remercie pour l'info.
    Je viens de tester et j'arrive bien à récupérer la form via :
    Dim maForm as windows.form.form = FrmMenu (je passerais le nom en paramètre dans ma fonction)

    par contre lorsque je veux tester le contrôle via mon for each je n'arrive pas à récupérer mes button au sein de mon panel.

    Ne devrais-je pas avoir la possibilité d'interroger le panel au sein de maForm exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each ctr As Control In maForm.panel.controls
    avec ce type de boucle je n'arrive pas à interroger les buttons de mon panel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each ctr As Control In varlv.controls
                    If TypeOf ctr Is Guna.UI.WinForms.GunaAdvenceButton Then
                        If ctr.Name = "GunaAdvenceButton1" Then
                            ctr.Text = "Contrôles"
                        End If
                    End If
                Next
    Je te remercie par avance.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 112
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 112
    Points : 1 617
    Points
    1 617
    Par défaut
    ça devrait fonctionner si varlv est le conteneur parent (il faut son nom et pas le type du contrôle) donc par exemple maForm.Controls("Panel1") ou FrmMenu.Panel1

  5. #5
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Oui voila j'ai bien réussi à récupérer ma form est à lire les buttons de celle-ci par contre, je voudrais modifier text du button via moncontrol.text = "NewValue" mais cela ne fonctionne pas. Il n'y a pas d'erreur de retour d'erreur dans le code, la console d'objet affiche bien la nouvelle valeur text mais dans la form il n'y a pas de modification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     For Each ctr As Control In maform.Controls("GunaPanel2").Controls
                    If TypeOf ctr Is Guna.UI.WinForms.GunaAdvenceButton Then
                        If ctr.Name = "GunaAdvenceButton7" Then
                       ctr.text = "test"
    end if
    next
    J'ai recherché et il semblerait que le faite de passer par un module, bloque ma modification. Peux-tu également me donner quelques conseils sur le sujet s'il te plaît

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 112
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 112
    Points : 1 617
    Points
    1 617
    Par défaut
    J'ai fait un test, ça fonctionne chez moi. Il faudrait voir ton code complet (appel de la méthode, méthode complete)
    Dans ton code il doit manquer un "End If" on dirait (sauf si il y a un retour à ligne du au forum)
    Et si il y a des erreurs, ça serait bien aussi d'avoir leur message

  7. #7
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Voici le code global. Par la suite je vais essayer de modifier le 2eme paramètre de ma function pour ajouter la form.
    Il faut que je regarde comment je peux la renvoyer directement.

    Dans mon formulaire logistique
    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
    Private Sub FRM_log_control_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       MenuDetail(ListeMenu, "logistique")
    End sub
    --------Module
     
        Sub MenuDetail(ByVal menus As String)
           If Form = "logistique" Then
                Dim maform As Form = FrmMenu
            End If
     
     
     
            If ListeMenu = "commande" Then
     
                FrmMenu.GunaAdvenceButton1.Text = "Sources des" & vbCrLf & "commandes"
                FrmMenu.GunaAdvenceButton2.Text = "Commandes" & vbCrLf & "par statut"
                FrmMenu.GunaAdvenceButton3.Text = "Détail des" & vbCrLf & "commandes"
                FrmMenu.GunaAdvenceButton4.Text = "Intégration" & vbCrLf & "fichier imprimeur"
                FrmMenu.GunaAdvenceButton5.Text = "Contrôle des" & vbCrLf & "commandes"
                FrmMenu.GunaAdvenceButton6.Text = "Créer commande" & vbCrLf & "en masse"
     
     
     
            ElseIf ListeMenu = "logistique" Then
                For Each ctr As Control In maform.Controls("GunaPanel2").Controls
                    If TypeOf ctr Is Guna.UI.WinForms.GunaAdvenceButton Then
                        If ctr.Name = "GunaAdvenceButton7" Then
                            MessageBox.Show(ctr.Text) 
    ---- cette modification de text ne fonctionne pas                 
                            ctr.Text = "Contrôles"
                        End If
                    End If
                Next
     
            End If
     
            'permet de gérer l'affichage des buttons du menu
            For Each ctrl As Control In maform.Controls("GunaPanel2").Controls
                If (TypeOf ctrl Is Guna.UI.WinForms.GunaAdvenceButton) Then
                    For i = 1 To 7
                        'If ctrl.Text = "GunaAdvenceButton" & i.ToString Then
                        ' ctrl.Visible = False
                        'End If
                    Next
                End If
            Next
        End Sub

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 112
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 112
    Points : 1 617
    Points
    1 617
    Par défaut
    Pour commencer, tu passes 2 paramètres à ta méthode MenuDetail (MenuDetail(ListeMenu, "logistique")) alors qu'elle n'en attend qu'un seul (Sub MenuDetail(ByVal menus As String)).

    Ensuite If Form = "logistique" d'où vient Form, c'est quoi ici ? ...

    Il me manque peut-être une info sur le fait qu'il faille créer la Form frmMenu ou si elle existe déjà.
    Mais avec le code suivant, tu devrais trouver ton bonheur selon ton besoin (cf les commentaires)

    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
    Private Sub FRM_log_control_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       MenuDetail("logistique",Me)  'Me fait référence à la form dans laquelle le code se trouve
       'MenuDetail("logistique",frmMenu) 'il faut que la form frmMenu soit déjà existante
       'Si on veut crée une nouvelle Form de type de frmMenu:
        'Dim newForm as Form = new frmMenu 'on créé une instance de frmMenu que l'on passe à la fonction
        'MenuDetail("logistique", newForm) 
        'newForm.Show() ' on affiche la nouvelle instance
    End sub
    --------Module
     
        Sub MenuDetail(ByVal menus As String, maForm as Form)
           'If Form = "logistique" Then
           '     Dim maform As Form = FrmMenu
           'End If
     
     
     
            If ListeMenu = "commande" Then
              ' ça sera aussi du code à revoir, cf code en dessous
                'FrmMenu.GunaAdvenceButton1.Text = "Sources des" & vbCrLf & "commandes"
                'FrmMenu.GunaAdvenceButton2.Text = "Commandes" & vbCrLf & "par statut"
                'FrmMenu.GunaAdvenceButton3.Text = "Détail des" & vbCrLf & "commandes"
                'FrmMenu.GunaAdvenceButton4.Text = "Intégration" & vbCrLf & "fichier imprimeur"
                'FrmMenu.GunaAdvenceButton5.Text = "Contrôle des" & vbCrLf & "commandes"
                'FrmMenu.GunaAdvenceButton6.Text = "Créer commande" & vbCrLf & "en masse"
                Dim listTxt as Array={"Sources des" & vbCrLf & "commandes",
                                                "Commandes" & vbCrLf & "par statut",
                                                "Détail des" & vbCrLf & "commandes",
                                                "Intégration" & vbCrLf & "fichier imprimeur",
                                                "Contrôle des" & vbCrLf & "commandes",
                                                "Créer commande" & vbCrLf & "en masse"}
                For i as integer = 1 to listTxt.Length
                     maForm.Controls("GunaAdvenceButton" & i).Text=listTxt(i-1)
                Next
     
            ElseIf ListeMenu = "logistique" Then
                For Each ctr As Control In maform.Controls("GunaPanel2").Controls
                    If TypeOf ctr Is Guna.UI.WinForms.GunaAdvenceButton Then
                        If ctr.Name = "GunaAdvenceButton7" Then
                            MessageBox.Show(ctr.Text) 
    ---- cette modification de text ne fonctionne pas                 
                            ctr.Text = "Contrôles"
                        End If
                    End If
                Next
     
            End If
     
            'permet de gérer l'affichage des buttons du menu
            For Each ctrl As Control In maform.Controls("GunaPanel2").Controls
                If (TypeOf ctrl Is Guna.UI.WinForms.GunaAdvenceButton) Then
                    ' Ce for ne sert à rien puisqu'on parcourt déjà les contrôles avec le For Each 
                      'For i = 1 To 7
                        'If ctrl.Text = "GunaAdvenceButton" & i.ToString Then
                        ' ctrl.Visible = False
                        'End If
                    'Next
                End If
            Next
        End Sub

  9. #9
    Membre à l'essai
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Umfred merci beaucoup pour tes explications et le temps que tu as passé, cela est devenu beaucoup plus simple à comprendre.

    Je vais utilisé également ta liste array, je n'avais pas encore utilisé ce type de liste.

    Je souhaite une bonne journée.

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 112
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 112
    Points : 1 617
    Points
    1 617
    Par défaut
    J'ai utilisé un Array, mais tu peux utiliser une liste ou autre chose de type Collection/tableau (il faut juste faire attention aux indices parfois)

  11. #11
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 669
    Points : 5 238
    Points
    5 238
    Par défaut
    Il serait temps de revoir les bases avant d'inventer une solution basée sur la passage d'une Form.

    Dans le premier message, il est précisé que la routine appelée est déclarée DANS la Form.
    Nul besoin de la passer en paramètre, elle est accessible via Me.

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 112
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 112
    Points : 1 617
    Points
    1 617
    Par défaut
    La méthode étant dans un fichier module, il faut bien passer la fenêtre en paramètre

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

Discussions similaires

  1. Hyperlien avec paramètre pour afficher une info d'une base SQLite
    Par olivier.eckmann dans le forum Android
    Réponses: 2
    Dernier message: 22/01/2013, 12h09
  2. Réponses: 3
    Dernier message: 26/01/2007, 23h41
  3. [C++.NET]Récupérer une form
    Par Asiany dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 07/01/2007, 12h55
  4. Réponses: 27
    Dernier message: 19/09/2006, 09h51
  5. Faire passer une table en paramètre pour une procedure
    Par samplaid dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/02/2006, 11h26

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