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 :

Impossible de convertir bout de code en fonction


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut Impossible de convertir bout de code en fonction
    Bonjour,

    Dans mon application l'interface est un menu sur la gauche qui ouvre les différents formulaires dans un tab control central en créant chaque fois un nouveau tab.

    Pour faire ça, j'utilise ceci lorsqu'on clic par exemple sur le bouton settings du menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     TabControl1.Visible = True
            Dim t As New TabPage
            Dim newtab As New Settings(Me)
            newtab.Show()
            newtab.TopLevel = False
            newtab.Dock = DockStyle.Fill
            t.Text = "Paramétrage général"
            t.Controls.Add(newtab)
            TabControl1.TabPages.Add(t)
            TabControl1.SelectedIndex = TabControl1.TabCount - 1
            fonctions.writetolog("L'utilisateur " & connecteduser & " à ouvert " & t.Text)
    Ce bout de code s'exécute donc à chaque fois sur chaque bouton....
    J'essaie de le passer en fonction pour limiter chaque appel à une seule ligne en faisant comme ceci :

    La fonction à 2 variables, le formulaire à appeler et le texte à faire apparaître dans le tab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Function opentab(ByVal fen As Form, ByVal text As String)
            TabControl1.Visible = True
            Dim t As New TabPage
            Dim newtab As New fen(Me)
            newtab.Show()
            newtab.TopLevel = False
            newtab.Dock = DockStyle.Fill
            t.Text = text
            t.Controls.Add(newtab)
            TabControl1.TabPages.Add(t)
            TabControl1.SelectedIndex = TabControl1.TabCount - 1
        End Function
    Je ne sais pas pourquoi.... il ne veut pas reconnaître le paramètre fen.
    Il me dit " le type fen n'est pas défini".

    J'aimerais vraiment pouvoir compacter mon code car le menu ne cesse de grandir et je vais le doubler dans un ruban supérieur....
    Quelqu'un à une idée?

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Oui, mais ton code ne montre pas, comment tu as défini Form, ni comment tu l'envoies à ta fonction comme Fen.

    Également, il te manque ton Return à la fin de ta fonction.

    Et, je ne suis pas convaincu que d'ouvrir ta Form pour récupérer ta donnée soit la meilleure façon de le faire.

    Si l'ai bien compris, personnellement, je regarderais du côté d'un fichier de ressources (Tu peux en avoir en supplément des fichiers de ressources des forms.) Mais bon, je peux me tromper.

  3. #3
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    Hello,

    Merci pour la réponse.
    Effectivement, dans chaque form appelable j'ai ajouté ceci en début de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public accueilform As Accueil
        Public Sub New(acform As Accueil)
            InitializeComponent()
            accueilform = acform
    End Sub
    Pour le return oui, je peux ajouter un return mais en elle-même la fonction ne return rien si ce n'est TRUE en cas de réussite et FALSE en cas d'échec.

    Pour la suite, je ne comprends pas trop... :
    Et, je ne suis pas convaincu que d'ouvrir ta Form pour récupérer ta donnée soit la meilleure façon de le faire.
    Si l'ai bien compris, personnellement, je regarderais du côté d'un fichier de ressources (Tu peux en avoir en supplément des fichiers de ressources des forms.) Mais bon, je peux me tromper.

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Mais dans cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function opentab(ByVal fen As Form, ByVal text As String)
    Fen, c'est quelle Form ? Et c'est quoi la ligne qui l'appelle ? Si ta Fen c'est une form unique et que ta fonction est dans le module de cette Form, je ne suis pas sûr que ce soit nécessaire de la transmettre.

    Pour la suite, je ne comprends pas trop... :
    Et, je ne suis pas convaincu que d'ouvrir ta Form pour récupérer ta donnée soit la meilleure façon de le faire.
    Si l'ai bien compris, personnellement, je regarderais du côté d'un fichier de ressources (Tu peux en avoir en supplément des fichiers de ressources des forms.) Mais bon, je peux me tromper.
    Ce que je comprends, c'est que tu veux ouvrir une form pour trouver une donnée. Si ce n'est pas cela, désolé.

    Si l'idée c'est d'avoir une seule Form qui affiche un seul volet à chaque utilisateur et que chaque volet doit surveiller ce que son utilisateur fait, là j'avoue que tu m'as perdu en chemin. Plus de code et quelques captures d'écran (m')aideraient. Si ton application se retrouve sur toutes tes machines et sert "d'explorateur Windows"; cela me semble être plus approprié d'envisager une d'application MDI qui affiche des Form au besoin q'une seule form "extensible". Mais honnêtement, j'ai trop de "si" en tête et pas de solution.

  5. #5
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    Effectivement je pense que tu ne m'as pas compris :p
    Je vais essayer avec des captures d'écran.

    Donc, l'interface de l'application quand tu l'ouvres est un menu situé à gauche et un grand trou vide au centre :
    Nom : Capture.PNG
Affichages : 259
Taille : 48,3 Ko

    Quand l'utilisateur choisi une des options du menu, le form concerné s'affiche dans le trou du centre, qui est en fait un tab control, dans un nouveau tab :
    Si je clic sur "paramétrage général", le tab s'ouvre et le form "Settings" est affiché :
    Nom : Capture2.PNG
Affichages : 227
Taille : 117,2 Ko

    Ect, ect pour les autres options.

    Donc dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function opentab(ByVal fen As Form, ByVal text As String)
    Fen représente le form du projet qui doit être affiché dans le tab control.
    C'est donc une variable de type Form que je souhaite passer en argument dans la fonction.

    J'espère que c'est plus clair comme ça

  6. #6
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Avec les screenshots c'est vraiment plus clair ...
    Je n'aurai qu'une chose à dire ....il y a carrément plus simple car à mon avis ce type de gestion de menu risque de complexifier grandement ton projet et à ce stade il faudrait se concentrer sur l'essentiel qui est le traitement des données ....

    ----> Un exemple :
    TabcontrolVerticalProject.zip

    Pour la gestion du menu :

    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
     
    Public Class Form1
     
        Public Sub New()
            InitializeComponent()
            TableLayoutPanel1.Dock = DockStyle.Fill
            HideMainMenuTabs() 'Commenter cette ligne permet d'afficher les entetes des TabPages du TabControl1.
            AssociateButtonsToTabPages()
        End Sub
     
        'On cache les entetes des TabPages pour gagner en ergonomie d'affichage sur le côté droit
        Private Sub HideMainMenuTabs()
            With TabControl1
                .SuspendLayout()
                .SizeMode = TabSizeMode.Fixed
                .ItemSize = New Size(0, 1)
                .Appearance = TabAppearance.FlatButtons
                .ResumeLayout()
            End With
        End Sub
     
        ' On associe les boutons aux Tabpages en se basant sur la propriété .Tag pour les boutons et l'index de positionnement du bouton dans la grille du TableLayoutPanel1
        Private Sub AssociateButtonsToTabPages()
            For Each ctrl As Control In TableLayoutPanel1.Controls
                If TypeOf ctrl Is Button Then
                    ctrl.Tag = TableLayoutPanel1.GetRow(ctrl)
                End If
            Next
        End Sub
     
        Private Sub Menu_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click, Button6.Click, Button7.Click
            SelectTab(sender.tag)
        End Sub
     
        Private Sub SelectTab(BtnIndex As Integer)
            'On appelle le tabpage correspondant à l'index stocké dans la propriété .Tag du bouton
            TabControl1.SelectedIndex = BtnIndex
        End Sub
     
     
    End Class
    En mode Designer dans VS :

    Nom : TabcontrolVerticalProject0.jpg
Affichages : 198
Taille : 67,3 Ko


    En mode Execution :

    Nom : TabcontrolVerticalProject1.jpg
Affichages : 166
Taille : 22,4 Ko


    Si tu as des questions n'hésites pas

    Bon codage

Discussions similaires

  1. Convertir ce bout de code (texte) en lien cliquable
    Par zvath773 dans le forum Débuter
    Réponses: 1
    Dernier message: 18/03/2012, 21h39
  2. Passer un bout de code html en paramètre d'une fonction javascript
    Par yoshimitsu dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 04/08/2011, 14h40
  3. rendre invisible un bout de code en fonction d une radio box
    Par florianjoy54 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/02/2011, 14h14
  4. bout de code à dechifrer svp
    Par bball dans le forum C
    Réponses: 32
    Dernier message: 20/01/2005, 23h23

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