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 :

Problème : création de composants


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut Problème : création de composants
    Bonjour à tous,

    voilà mon probleme :

    j'aimerai créer des compostant d'une certaine manière

    en gros ca donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim TypeObjet as string = "combobox"
    dim monObjet as TypeObjet
    mais je sais que ca ne fonctionne pas c'est juste pour vous montrer le concept
    comment puis-je arriver a les fins???

    ce qui m'intéresserai c'est de créer des composant à la demande

    SVP

    merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Des composants d'accord... mais des composants WinForm ou WebForm?

    Parceque ça change TOUT

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    ben des winform mais si la manière est différente en webform alors j'aimerais connaitre les 2 manières

    si possible

    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Pour être honnête en WebForm c'est un peu compliqué. En plus il y a plusieurs types de composants WebControl possibles... Je te donne quand même un exemple brut d'un WebControl de type composite que jai créé pour un projet.

    En l'occurence, c'est un truc tout simple : un label + une DropDownList

    le .ascx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%@ Control Language="vb" AutoEventWireup="false" CodeBehind="wcCatalogueArticles.ascx.vb" Inherits="BackOffice_DOTNET.wcCatalogueArticles" %>
    <asp:Label ID="lblCatalogueArticle" runat="server" Width="150px" EnableViewState="False"></asp:Label>&nbsp;
    <asp:DropDownList ID="ddlCatalogueArticle" runat="server" Width="200px">
    </asp:DropDownList>
    le .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
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    Imports bLangue.cLangue
     
    Partial Public Class wcCatalogueArticles
        Inherits System.Web.UI.UserControl
     
    #Region "Propriétés"
     
        Private _cnxString As String = "Provider=" & System.Configuration.ConfigurationManager.ConnectionStrings("Dotsoft").ProviderName & ";" & System.Configuration.ConfigurationManager.ConnectionStrings("Dotsoft").ConnectionString
        Public Property connectionString() As String
            Get
                Return Me._cnxString
            End Get
            Set(ByVal value As String)
                _cnxString = value
            End Set
        End Property
     
        Private _langue As Integer = 1
        Public Property Langue() As Integer
            Get
                Return Me._langue
            End Get
            Set(ByVal value As Integer)
                _langue = value
            End Set
        End Property
     
        Public ReadOnly Property ddl() As WebControls.DropDownList
            Get
                EnsureChildControls()
                Return Me.ddlCatalogueArticle
            End Get
        End Property
     
        Public ReadOnly Property lbl() As WebControls.Label
            Get
                EnsureChildControls()
                Return Me.lblCatalogueArticle
            End Get
        End Property
     
        ''' <summary>Si on souhaite afficher la dropDownList uniquement alors il faut passer ce paramètre à True</summary>
        Private _noLabel As Boolean = False
        Public Property noLabel() As Boolean
            Get
                Return Me._noLabel
            End Get
            Set(ByVal value As Boolean)
                Me._noLabel = value
            End Set
        End Property
    #End Region
     
        Protected Overrides Sub CreateChildControls()
            If Not Me._noLabel Then
                Me.lblCatalogueArticle.Text = xL(4575, Me._langue, "Catalogue article", Me._cnxString)
                Me.Controls.Add(Me.lblCatalogueArticle)
     
                Me.Controls.Add(New LiteralControl(" : "))
            End If
     
            Me.mInitDropDownListCatalogueArticle()
            Me.Controls.Add(Me.ddlCatalogueArticle)
        End Sub
     
        ''' <summary>
        ''' Vide et reremplie le menu déroulant du distributeur
        ''' </summary>
        Private Sub mInitDropDownListCatalogueArticle()
     
            'Affiche l'info bulle
            Me.ddlCatalogueArticle.ToolTip = xL(6623, Me._langue, "Choisissez ici un catalogue d'articles", Me._cnxString)
     
            'Vide le control
            While Me.ddlCatalogueArticle.Items.Count > 0
                Me.ddlCatalogueArticle.Items.Remove(Me.ddlCatalogueArticle.Items(0))
            End While
     
            'Ajoute la première ligne par défaut
            Me.ddlCatalogueArticle.Items.Add(New ListItem("-- " & xL(4567, Me._langue, "Choix Catalogue", Me._cnxString) & " --", "-1"))
     
            'Remplie le control avec la liste des distributeurs
            Dim oCatalogues As Generic.List(Of bObjets.oCatalogueArticles) = bObjets.oCataloguesArticles.msCataloguesArticles(Me._cnxString)
            If Not oCatalogues Is Nothing Then
                For Each catalogue As bObjets.oCatalogueArticles In oCatalogues
                    Me.ddlCatalogueArticle.Items.Add(New ListItem(catalogue.pLibelle, catalogue.pIdCatalogue))
                Next
            End If 'Fin si il y a des catalogue d'articles
        End Sub
    End Class
    Mais si tu as besoin de UserControl winForm uniquement, dans un premier temps on va parler de cela.

    En WinForm il te suffit d'ajouter un élément à ton projet de type "Controle Utilisateur". Ensuite tu dispose d'un mode designer + code classique...

    Il n'y a en fait pas de grande différence entre la création d'une winform et le création d'un contrôle utilisateur...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    attend c'est un peu trop long là

    je veux juste, par exemple,

    introduire le mot textbox dans un inputbox et dans la forme il s'affiche un composant de type textboxt, ou combobox ou button

    tu comprends???

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Dans ce cas tu devrais créer un control utilisateur conteant tous les éléments que tu peux potentiellement affiché et selon ce que passe l'utilisateur tu affiche tel ou tel composant.

    Par comtre utilise un menu déroulant plutôt qu'une textBox... comme ça tu limites les contrôles possibles.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Ou alors encore plus simplement...

    Selon la sélection de l'utilisateur tu crées une textBox ou un label... ou ce que tu veux.

    qqch comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim element As Control
     
    select Case ddlSelectionUtilisateur.selectedValue
      case "menu_deroulant"
        element = new ...
      case "textbox"
        element = new textbox()
    ...
     
    Me.monPanel.controls.add(element)
    C'est bien cela que tu veux faire?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    ouiii.

    mais ca c'est quelquechose que je sais déja faire mais en fait ce que je veux c'est passe outre ca pour qu'il me créer ce que je veux directement sans passer par un "case of" tu comprends vraiment du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim TypeObjet as string = "combobox"
    dim monObjet as TypeObjet
    TypeObjet c'est une variable crée par l'utilisateur qui créer directement un type.

    ce que je veux c'est ne par limiter type.
    car la les composant à créer sont limités par le case OF


  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par programaniac Voir le message
    ce que je veux c'est ne par limiter type.
    c'est pas très clair là...


    Sinon je ne vois pas comment fonctionnelement cala doit se comporter?
    Si je tape "toto" dans ton imputBox ... que se passe-t-il?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    Au lieu de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim element As Control
     
    select Case ddlSelectionUtilisateur.selectedValue
      case "menu_deroulant"
        element = new ...
      case "textbox"
        element = new textbox()
    ...
     
    Me.monPanel.controls.add(element)
    je veux faire un truc qui ressemble à ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim element As Control
    dim monObjet as string = "TextBox" 
    ' "textbox" est une valleur définit par l'utilisateur dans un formulaire par exemple
     
    element = new monObjet ()
    'qui va créer l'element
     
    Me.monPanel.controls.add(element)
    c'est pas ca que je demande mais un truc qui ressemble
    comme ca je peux créer directement CE que Je veux sans avoir a le préparer dans un case of

    et là???



    Encore Merci

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    1 - Tu n'as pas répondu à ma question
    2 - ce que tu demandes n'a pas de sens, c'est comme demander à un utilisateur :
    "Tapes dans la zone de texte ce que tu veux que fasses la programme et le code se fera tout seul"



    Il faut bien définir quelque part que "textbox" correspond à l'objet TextBox non?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    Tu a raison dans le sens ou tu dis

    Il faut bien définir quelque part que "textbox" correspond à l'objet TextBox non?
    mais est ce qu'il n'y a pas une alternative à ca????

    par exemple un type "TYPE" qui me permettrai de faire ce que j'ai envie de faire

    parce que je trouve un peut lourd de devoir préparer un caseOf

    et en plus ca rend pas le programme lèger quoi

    tu me comprends

    aller quoi j'en suis sur c'est possible



  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Non c'est pas possible pour la simple et bonne raison que chaque control herite de la class control et n'est pas est type de control.

    Vois-tu la différence?

    PS: tu sais un petit case de 10 lignes c'est pas bien méchant

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    hhaaa ok ok merci bcp

    juste une dernière question à quoi ca sert le type "type" dans Vb.NET???

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    et bien cela sert à déterminer le type d'un objet.

    Par exemple, tu peut passer un object en paramètre d'une fonction et selon le type faire tel ou tel traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Public Function test(ByVal o As Object)
            If TypeOf (o) Is TextBox Then
                'bla bla bla
            End If
        End Function

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    je veux dire la classe TYPE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dim monObj as Type
    ca sert à quoi???

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Type est une class system qui herite de memberInfo...

    Honnêtement, je ne sais pas à quoi elle sert mais sûrement pas à faire ce que tu essayes de faire.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 256
    Points : 107
    Points
    107
    Par défaut
    ok grand merci et dsl si je t'ai ennuyé

    ++

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 480
    Points : 357
    Points
    357
    Par défaut
    Pas de soucis le forum est là pour ça

    J'ai trouvé beaucoup de réponses grâce à lui, et appris beaucoup de chose. Il est normal d'aider à mon tour.

    Par contre moi aussi j'aurais bien aimé trouver un exemple d'utilisation de cette fameuse class Type.

Discussions similaires

  1. [Lazarus] Problème de création de composant
    Par Gouyon dans le forum Lazarus
    Réponses: 24
    Dernier message: 06/11/2011, 00h25
  2. Problème création composant EClassNotFound
    Par Djelangelo dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/04/2011, 14h58
  3. Création de composants: Problème lors du Destroy
    Par fred64 dans le forum Langage
    Réponses: 17
    Dernier message: 13/12/2007, 23h42
  4. Problème création composant conteneur
    Par nek_kro_kvlt dans le forum Delphi
    Réponses: 5
    Dernier message: 29/07/2007, 01h09
  5. Réponses: 1
    Dernier message: 29/05/2007, 01h00

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