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 6 et antérieur Discussion :

Chkbox dans colonne de flexgrid


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 49
    Par défaut Chkbox dans colonne de flexgrid
    Bonjour,

    Je voudrais savoir si c'est possible de mettre une checkbox dans une colonne, pour chaque ligne d'un recordset, de telle facon que quand je clik ou pas sur la checkbox, ca modifie la valeur liée dans la table qui la contient :

    J'ai fait ça pour le moment mais je sais pas comment continuer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To record.RecordCount
         ms_relance.TextMatrix(i, 0) = ???
    Next i
    Sinon, j'ai pensé à faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If record.Fields(4) = "Faux" Then
                    ms_relance.TextMatrix(i, 4) = "Non"
                Else
                    ms_relance.TextMatrix(i, 4) = "Oui"
                End If
    Si le booléen est sur "Vrai", on met "oui", et si il est sur "Faux", on met "Non". Après, c'est à l'utilisateur de changer le texte si il change ou pas. Mais une checkbox, c'est tellement plus bien...

  2. #2
    Membre confirmé Avatar de jlvalentin
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Par défaut
    Salut,

    Je ne crois pas que cela soit possible. J'ai eu un peu le même soucis avec une ComboBox.
    Il faudrait que tu fasses :
    • 1) Ajouter une checkbox sur ta form.
      2) Verifier le click utilisateur sur ta flexgrid (en verifiant la colonne)
      3) Si l'utilisateur a clické dans la bonne colonne, alors tu déplaces ta check box à la bonne position
      4) Lorsque ta checkbox perd le focus, alors tu places la valeur (true ou false) dans la bonne cellule de ta flexgrid.

    Je suis en train de travailler à un exemple, mais pour l'instant j'ai pas vraiment fini.

    Voici un lien sur un de mes post sur ce sujet, ou Ridanm'avais gentiment fourni un source qui faisait cela (avec une combox), mais le principe est exactement le même.
    http://www.developpez.net/forums/vie...844&highlight=
    Sinon, le source en example, fourni par Ridan (encore merci) se trouve ici http://ridan.developpez.com/vb/temp/Flex_Combo.zip

  3. #3
    Membre éclairé
    Avatar de ridan
    Inscrit en
    Avril 2003
    Messages
    710
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 710

  4. #4
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 49
    Par défaut
    Alors merci pour ta source, j'vais voir ça.

    Pour la faq, j'ai bien vu, mais j'ai pas bien compris, alors je cherche une autre solution, voilà tout. J'ai essayé de copier bêtement le code, et il bloque sur le "commande", en me disant qu'il ne sais pas ce que c'est, et sur le "iif", ce que je ne sais pas ce que c'est non plus.

    VOilà ^^

  5. #5
    Membre éclairé
    Avatar de ridan
    Inscrit en
    Avril 2003
    Messages
    710
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2003
    Messages : 710
    Par défaut
    salut

    voici un exemple intéressant que j'ai trouvé sur le net, en utilisant la police Wingdings :

    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
    Private Const Checked As Byte = 253
    Private Const UnChecked As Byte = 168
    Private Sub Form_Load()
     
        Dim CCol, CRow As Integer
     
        With MSFlexGrid1
     
            .FixedCols = 0
            .FixedRows = 1
            .Cols = 8
            .Rows = 8
            .ColAlignment(2) = flexAlignCenterCenter
     
            For CRow = .FixedRows To .Rows - 1
     
                For CCol = 0 To .Cols - 1
                    .TextMatrix(CRow, CCol) = "Cel " & CRow & ", " & CCol
                Next CCol
     
                .Col = 2
                .Row = CRow
                .CellFontName = "Wingdings"
                .CellFontSize = 12
                .CellFontBold = False
                .Text = Chr(UnChecked)
     
            Next CRow
     
        End With
     
     
    End Sub
     
    Private Sub MSFlexGrid1_Click()
     
        With MSFlexGrid1
     
            If .Col = 2 Then
                If .Text = Chr(UnChecked) Then
                    .Text = Chr(Checked)
                ElseIf .Text = Chr(Checked) Then
                    .Text = Chr(UnChecked)
                End If
            End If
     
        End With
     
    End Sub

  6. #6
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 49
    Par défaut
    EDIT : Jvien de voir ton post ridan, jme penche dessus de suite

    Chtite question pour le même sujet (je me suis rabattu sur la combo, avec un "Oui" ou un "Non", c'est pas plus mal) :

    Est ce que, au lieu que ce soit sur "entrée" que la combo s'affiche, on ne peut pas faire en sorte que elle s'affiche sur double-click de la CASE de la flexgrid concernée ?

    J'ai pensé à ça mais ça a pas l'air de marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub msflexgrid(numligne, numcolonne)_DblClick()
    Donc, je vois pas. Parce que pour l'utilisateur, je trouve ça lourd de devoir :
    - appuyer sur entrée (un double click serait mieux)
    - choisir (normal)
    - cliké ailleurs pour faire la modif (quand on choisi, ça met à jour)

    Mais ce ne sont que des idées et je n'ai pas le savoir faire pour les
    appliquer ^^

  7. #7
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 49
    Par défaut
    Bon, le code que tu m'as fourni marche à merveille (avec des ptites modifs bien sûr). Et je pense que, vu le nombre de personnes qui cherchent à mettre des chkbox dans des flexgrid ou des listview, ce code sera fort utile ^^.

    Merci pour tout !

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

Discussions similaires

  1. alignement dans colonne
    Par bergoliv dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 24/10/2007, 10h08
  2. ligne d'une table dans colonne d'un select
    Par Invité dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/09/2007, 11h49
  3. [WSS3] Lien dans colonne calculée
    Par vds2302 dans le forum SharePoint
    Réponses: 3
    Dernier message: 06/07/2007, 10h22
  4. Message erreur si même info dans colonne
    Par fugy33 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2007, 08h52
  5. Copy premiere Cellule vide dans colonne
    Par dvguy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/12/2006, 16h32

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