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

Vos contributions VB6 Discussion :

Gérer 2 listes pour permettre un choix


Sujet :

Vos contributions VB6

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 152
    Points
    17 152
    Par défaut Gérer 2 listes pour permettre un choix
    Salut

    Suite à la construction d’un programme pour mon entreprise, j’ai été amené à donner la possibilité à l’utilisateur de choisir le classement parmi une liste de champs d’une table, pour faire une sortie visualisée dans un MSHFlexGrid.
    Je vous propose donc une solution qui peut être utilisée pour la rédaction automatique d’une requête SQL.
    Dans l’exemple, sur un Form,
    2 ListBox nommées "ListE" indexées 0 et 1
    4 CmmandButton nommées "Cmds" indexées 0, 1, 2 et 3
    1 Label nommée "LabRequet"

    La liste de gauche à pour index 0, celle de droite 1.

    Dans les 2 listes :
    Si une des listes contient une ligne ou plusieurs, le clique sur le bouton " >----> " ou " <----< " fait passer la totalité de/des lignes de l’une à l’autre.
    Double clique sur l’une des lignes, passage de la ligne d’une liste à l’autre.
    Si une ligne est sélectionnée dans une des listes, avec le bouton " ---> " ou " <--- ", la ligne passera d’une liste à l’autre.

    Dans la liste de droite, index 1 :
    Le clique plus maintien du bouton gauche de la souris avec déplacement vers le haut ou bas déplace la ligne sélectionnée à l’intérieur dans la liste.
    Même effets avec les touches flèches haute/basse du clavier
    Possibilité de désélectionner par bouton droit de la souris.

    Lors d’un passage d’une ligne de la liste gauche vers la liste droite par double clique, si une ligne est en cours de sélection dans la liste de droite, l’insertion sera faite au dessus de la ligne sélectionnée, autrement la ligne sera ajoutée en fin de la liste.
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    '*********************************************************
    '** Sur un Form                                         **
    '** 2 ListBox nommées "ListE" indexées 0 et 1           **
    '** 4 CmmandButton nommées "Cmds" indexées 0, 1, 2 et 3 **
    '** 1 Label nommée "LabRequet"                          **
    '*********************************************************
     
    Option Explicit
    Dim MemoList As String, MemoItem As Integer ' pour permettre  le passage d'une ligne à une autre
    Dim NlignselL1 As Integer ' drapeau numéro de ligne sélectionnée dans liste index 1, -1 signifiant qu'aucune ligne n'est sélectionnée
    Dim Cpt As Integer ' pour permettre les boucles For .... Next et autres
    Private Sub Form_Load()
    Me.Height = 3075: Me.Width = 3630
     
    ListE(0).Move 60, 60, 1215, 1590
    ListE(0).ToolTipText = "Double cliquez pour faire passer d'une liste à l'autre"
    ListE(0).Clear
    ListE(0).AddItem "N° Cmd": ListE(0).ItemData(0) = 0
    ListE(0).AddItem "Date émis.": ListE(0).ItemData(1) = 4
    ListE(0).AddItem "Intitulé": ListE(0).ItemData(2) = 5
    ListE(0).AddItem "Date récep.": ListE(0).ItemData(3) = 6
    ListE(0).AddItem "FDT liée": ListE(0).ItemData(4) = 7
     
    ListE(1).Move 2100, 60, 1215, 1590
    ListE(1).ToolTipText = "Double cliquez pour faire passer d'une liste à l'autre, Touches fleche haute ou bas pour deplacer l'ordre de tri"
    ListE(1).Clear: ListE(1).ForeColor = &HC00000
    ListE(1).AddItem "Etat": ListE(1).ItemData(0) = 8
    ListE(1).AddItem "Fournisseur": ListE(1).ItemData(1) = 1
    ListE(1).AddItem "Emis par": ListE(1).ItemData(2) = 3
    ListE(1).AddItem "Client": ListE(1).ItemData(3) = 2
     
    Cmds(0).Move 1380, 60, 615, 315
    Cmds(1).Move 1380, 420, 615, 315
    Cmds(2).Move 1380, 960, 615, 315
    Cmds(3).Move 1380, 1320, 615, 315
    Cmds(0).Caption = ">------>"
    Cmds(1).Caption = "<------<"
    Cmds(2).Caption = "------>"
    Cmds(3).Caption = "<------"
    Cmds(2).Enabled = False: Cmds(3).Enabled = False
     
    LabRequet.Caption = "": LabRequet.ForeColor = &HC00000
    LabRequet.Move 60, 1800, 3195, 615
    Redact ' pour exemple d'utilisation
    End Sub
     
    Private Function NLignselect(ObjetList As ListBox) As Integer
    'routine pour savoir si une ligne est sélectionnée dans la liste passée en paramètre
    Dim T As Integer, Num As Integer
    Num = -1
    For T = 0 To ObjetList.ListCount - 1
        If ObjetList.Selected(T) = True Then Num = T: Exit For
    Next T
    NLignselect = Num
    End Function
    Private Sub GereCmds()
    'gestion permissions d'action des boutons déplacement d'une liste à l'autre
     
    If ListE(0).ListCount <> 0 Then
        Cmds(0).Enabled = True: Cmds(2).Enabled = True
        Else
        Cmds(0).Enabled = False: Cmds(2).Enabled = False 'Liste vide
    End If
    If ListE(1).ListCount <> 0 Then
        Cmds(1).Enabled = True: Cmds(3).Enabled = True
        Else
        Cmds(1).Enabled = False: Cmds(3).Enabled = False 'Liste vide
    End If
     
    If NLignselect(ListE(0)) = -1 Then
        Cmds(2).Enabled = False 'aucune ligne n'étant sélectionnée
        Else
        Cmds(2).Enabled = True
    End If
     
    If NLignselect(ListE(1)) = -1 Then
        Cmds(3).Enabled = False 'aucune ligne n'étant sélectionnée
        Else
        Cmds(3).Enabled = True
    End If
    End Sub
     
    Private Sub Cmds_Click(Index As Integer)
    Dim Cpt2 As Integer
    Select Case Index
     
        Case 0 'passage de toute la liste de gauche dans la liste de droite
            For Cpt = ListE(0).ListCount - 1 To 0 Step -1
                'copie de la ligne de la liste gauche dans la liste de droite
                ListE(1).AddItem ListE(0).List(Cpt)
                ListE(1).ItemData(ListE(1).NewIndex) = ListE(0).ItemData(Cpt)
            Next Cpt
            'supprime toutes les lignes de la liste de gauche
            ListE(0).Clear
     
        Case 1 'passage de toute la liste de droite dans la liste de gauche
            For Cpt = ListE(1).ListCount - 1 To 0 Step -1
                'copie de la ligne de la liste droite dans la liste de gauche
                ListE(0).AddItem ListE(1).List(Cpt)
                ListE(0).ItemData(ListE(0).NewIndex) = ListE(1).ItemData(Cpt)
            Next Cpt
            'supprime toutes les lignes de la liste de droite
            ListE(1).Clear
     
        Case 2 'passage de la ligne sélectionnée de la liste de gauche dans la liste de droite
                ' appel de la fonction recherche de ligne sélectionnée
                Cpt = NLignselect(ListE(0)) 'de la liste gauche pour passage à la liste de droite
                Cpt2 = NLignselect(ListE(1)) ' pour insertion à la liste de droite
                ' correction pour ajout en fin de liste si pas de sélection
                If Cpt2 < 0 Then Cpt2 = ListE(1).ListCount
                'copie de la ligne de la liste gauche dans la liste de droite
                ListE(1).AddItem ListE(0).List(Cpt), Cpt2
                ListE(1).ItemData(ListE(1).NewIndex) = ListE(0).ItemData(Cpt)
                'supprime la ligne de la liste de gauche
                ListE(0).RemoveItem Cpt
     
        Case 3 'passage de la ligne sélectionnée de la liste de droite dans la liste de gauche
                Cpt = NLignselect(ListE(1))
                'copie de la ligne de la liste droite dans la liste de gauche
                ListE(0).AddItem ListE(1).List(Cpt) 'ajout en fin de liste l'ordre pour cette liste n'important pas
                ListE(0).ItemData(ListE(0).NewIndex) = ListE(1).ItemData(Cpt)
                'supprime la ligne de la liste de droite
                ListE(1).RemoveItem Cpt
    End Select
    GereCmds
    Redact ' pour exemple d'utilisation
    End Sub
     
     
    Private Sub ListE_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Index = 1 Then
        NlignselL1 = -1
        If Button = 2 And ListE(1).ListIndex <> -1 Then
            If ListE(1).Selected(ListE(1).ListIndex) = True Then
                'desélection  de la ligne par appuis du bouton droit de la souris
                ListE(1).Selected(ListE(1).ListIndex) = False
            End If
        End If
        If Button = 1 And ListE(1).ListIndex <> -1 Then
            'récupération de la ligne sélectionnée par le bouton gauche de la souris
            NlignselL1 = ListE(1).ListIndex
        End If
    End If
    End Sub
    Private Sub ListE_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Index = 1 And Button = 1 And NlignselL1 <> -1 Then
        'gestion déplacements, dans la liste de droite, d'une ligne vers le haut ou le bas suivant le déplacement de la souris,
        'bouton gauche de la souris enfoncé
        If ListE(1).ListIndex <> NlignselL1 Then
            'mémorisation des informations de la ligne en cours de sélection
            MemoList = ListE(1).List(ListE(1).ListIndex)
            MemoItem = ListE(1).ItemData(ListE(1).ListIndex)
            'passe les informations de la ligne précédemment sélectionnée à la ligne en cours de sélection
            ListE(1).List(ListE(1).ListIndex) = ListE(1).List(NlignselL1)
            ListE(1).ItemData(ListE(1).ListIndex) = ListE(1).ItemData(NlignselL1)
            'passe les informations mémorisées à la ligne précédemment sélectionnée
            ListE(1).List(NlignselL1) = MemoList
            ListE(1).ItemData(NlignselL1) = MemoItem
            'mémorise le N° de ligne en cours de sélection pour le prochain changement de sélection de ligne
            NlignselL1 = ListE(1).ListIndex
            Redact ' pour exemple d'utilisation
        End If
    End If
    End Sub
    Private Sub ListE_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    GereCmds
    End Sub
    Private Sub ListE_DblClick(Index As Integer)
    'Passage d'une ligne de la liste double cliquée à l'autre liste
    If Index = 0 Then
        'de liste gauche vers liste de droite
     
        'rechercher si une ligne est sélectionnée dans ListE(1) pour l'insérer au dessus de la sélection si elle existe
        Cpt = NLignselect(ListE(1)) ' appel de la fonction recherche de ligne sélectionnée
        If Cpt = -1 Then Cpt = 0 'aucune ligne n'étant sélectionnée, l'insertion est faite en début de liste
        'copie de la ligne de la liste gauche dans la liste de droite
        ListE(1).AddItem ListE(0).List(ListE(0).ListIndex), Cpt
        ListE(1).ItemData(ListE(1).NewIndex) = ListE(0).ItemData(ListE(0).ListIndex)
        'supprime la ligne de la liste de gauche
        ListE(0).RemoveItem ListE(0).ListIndex
     
        Else
        'de liste droite vers liste de gauche
     
        'copie de la ligne de la liste droite dans la liste de gauche
        ListE(0).AddItem ListE(1).List(ListE(1).ListIndex)
        ListE(0).ItemData(ListE(0).NewIndex) = ListE(1).ItemData(ListE(1).ListIndex)
        ListE(1).RemoveItem ListE(1).ListIndex
        NlignselL1 = -1 'puisque la ligne a été supprimée, il n'y a plus de sélection, met le drapeau à valeur de ligne non sélectionnée
    End If
    Redact ' pour exemple d'utilisation
    End Sub
    Private Sub ListE_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
    If Index = 1 Then
        'gestion déplacement de la ligne dans la liste de droite
        If ListE(1).ListCount >= 2 Then
            Select Case KeyCode
                Case 38 'Up, flêche déplacement vers le haut
                    If ListE(1).ListIndex >= 1 Then
                        'mémorisation des informations de la ligne en cours de sélection
                        MemoList = ListE(1).List(ListE(1).ListIndex)
                        MemoItem = ListE(1).ItemData(ListE(1).ListIndex)
                        'passe les informations de la ligne juste au dessus de la ligne sélectionnée à la ligne en cours de sélection
                        ListE(1).List(ListE(1).ListIndex) = ListE(1).List(ListE(1).ListIndex - 1)
                        ListE(1).ItemData(ListE(1).ListIndex) = ListE(1).ItemData(ListE(1).ListIndex - 1)
                        'passe les informations mémorisées à la ligne juste au dessus de la ligne sélectionnée
                        ListE(1).List(ListE(1).ListIndex - 1) = MemoList
                        ListE(1).ItemData(ListE(1).ListIndex - 1) = MemoItem
                    End If
                Case 40 'down, flêche deplacement vers le bas
                    If ListE(1).ListIndex <= ListE(1).ListCount - 2 Then
                        'mémorisation des informations de la ligne en cours de sélection
                        MemoList = ListE(1).List(ListE(1).ListIndex)
                        MemoItem = ListE(1).ItemData(ListE(1).ListIndex)
                        'passe les informations de la ligne juste au dessous de la ligne sélectionnée à la ligne en cours de sélection
                        ListE(1).List(ListE(1).ListIndex) = ListE(1).List(ListE(1).ListIndex + 1)
                        ListE(1).ItemData(ListE(1).ListIndex) = ListE(1).ItemData(ListE(1).ListIndex + 1)
                        'passe les informations mémorisées à la ligne juste au dessous de la ligne sélectionnée
                        ListE(1).List(ListE(1).ListIndex + 1) = MemoList
                        ListE(1).ItemData(ListE(1).ListIndex + 1) = MemoItem
                    End If
            End Select
            Redact ' pour exemple d'utilisation
        End If
    End If
    End Sub
     
     
    '***************************** Exemple rédaction d'une requête SQL ***************************************
    Private Sub Redact()
    Dim MsgReqt As String
    For Cpt = 0 To ListE(1).ListCount - 1
        MsgReqt = MsgReqt & ListE(1).List(Cpt)
        If Cpt <> ListE(1).ListCount - 1 Then MsgReqt = MsgReqt & ", "
    Next Cpt
    LabRequet.Caption = "Select * From MaTable Order By " & MsgReqt
    End Sub
    Cela fait un mois que cette portion de programme est utilisée, si j’ai bien sût le transcrire dans ce petit exemple, il n’y a pas de bug .

    MOTIF DE L’ÉDIT:
    Correction du code suivant les remarques judicieuses de rv26t
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour ProgElecT

    Tout d'abord, merci de présenter cet exemple.

    Sinon, j'ai fait quelques tests rapide dans VB, et il me semble qu'il y a 2 petits bugs dans Cmds_Click

    Passage de la ligne sélectionnée de la liste de gauche dans la liste de droite
    Dans le cas ou aucune ligne n'est sélectionné dans la liste de droite Cpt2 revient avec -1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Case 2 'passage de la ligne sélectionnée de la liste de gauche dans la liste de droite
                ' appel de la fonction recherche de ligne sélectionnée
                Cpt = NLignselect(ListE(0)) 'de la liste gauche pour passage à la liste de droite
                Cpt2 = NLignselect(ListE(1)) ' pour insertion à la liste de droite
                ' correction pour ajout en fin de liste si pas de sélection
                If Cpt2 < 0 Then Cpt2 = ListE(1).ListCount
    Passage de la ligne sélectionnée de la liste de droite dans la liste de gauche
    Lorsque l'on calcule le Cpt, c'est sur la liste de droite, donc il faut utiliser --- Cpt = NLignselect(ListE(1)) ---
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Case 3 'passage de la ligne sélectionnée de la liste de droite dans la liste de gauche
                Cpt = NLignselect(ListE(1))
    J'espère que mes remarques sont judicieuses.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 152
    Points
    17 152
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Bonjour ProgElecT
    ...........
    J'espère que mes remarques sont judicieuses.
    A+, Hervé.
    Elles le sont


    C'est toujours le risque d'une adaptation en transcription d'un code fonctionnel en code d'exemple.
    De plus, en tant que programmeur, j'ai tendance, sur certaines erreurs, à ne pas penser à les provoquer lors des essais de debug.

    Dans la procédure Cmds_Click d'origine j'ai d'autres commandes, j'ai vérifié, j'ai bien oublié la ligne de gestion retour de Cpt2 et fait l'erreur de l'index lors du copier/coller.

    Merci à toi d'avoir contribué et rectifié ces erreurs.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    De rien.

    Citation Envoyé par ProgElecT Voir le message
    ... erreur de l'index lors du copier/coller.
    Les copier/coller c'est terrible. Le nombre de bug généré c'est


    Sinon j'aurais 2 petites suggestions pour la fonction NLignselect.

    _____
    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If ObjetList.Selected(T) = True Then Num = T: Exit For
    ObjetList.Selected(T) est un boolean, on peut le tester directement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If ObjetList.Selected(T) Then Num = T: Exit For
    Cela évite le test de comparaison (=), ici l'impact est infime.

    _____
    Afin d'éviter une variable supplémentaire dans le code on peut affecter les valeurs directement à la fonction (je trouve que c'est plus lisible quand il y a moins de variables intermédiaires)

    Ce qui nous donne pour la fonction NLignselect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Function NLignselect(ObjetList As ListBox) As Integer
    'routine pour savoir si une ligne est sélectionnée dans la liste passée en paramètre
    Dim T As Integer
    NLignselect = -1
    For T = 0 To ObjetList.ListCount - 1
        If ObjetList.Selected(T) Then NLignselect = T: Exit For
    Next T
    End Function
    Mais bon, c'est juste des habitudes personnelles de programmation.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 152
    Points
    17 152
    Par défaut
    Salut
    ObjetList.Selected(T) est un boolean, on peut le tester directement.
    Oui en effet, j’hésite souvent à mettre ce type de syntaxe dans une proposition de code sur un forum, j'ai toujours le réflexe de penser au coté pédagogique, le site DVP s'adressant autan aux professionnels qu'aux étudiants, la simplification pour ce cas précis ne permet pas à un débutant de comprendre le pourquoi de la condition.
    Afin d'éviter une variable supplémentaire ....
    Là oui en effet cela reste vraiment compréhensible, surement une mauvaise habitude de ma part.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Structure JS pour gérer une liste de photos ?
    Par titimoi dans le forum Débuter
    Réponses: 2
    Dernier message: 23/01/2012, 17h01
  2. Réponses: 2
    Dernier message: 15/03/2010, 22h14
  3. [VxiR2] Limiter le choix dans une listê pour un prompt?
    Par EmmanuelleC dans le forum Webi
    Réponses: 7
    Dernier message: 01/07/2009, 12h58
  4. Meilleur méthode pour gérer une liste des blocks
    Par smyley dans le forum Algorithmes et structures de données
    Réponses: 41
    Dernier message: 22/07/2008, 03h06
  5. [CVS] gérer deux CVS pour un projet
    Par tmcgrady dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 02/03/2005, 16h48

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