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 :

Afficher et modifier le contenu d'une grille


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 190
    Points : 92
    Points
    92
    Par défaut Afficher et modifier le contenu d'une grille
    Bonjour,

    Je dois afficher dans ma form une grille contenant une liste de parametres contenus dans une table PARAM
    Nom du parametre - Valeur
    Nom du parametre - Valeur
    Nom du parametre - Valeur
    Nom du parametre - Valeur
    ...

    L'utilisateur peut modifier la valeur des parametres
    La valeur peut être du texte, oui/non, une liste (champ _type de la table PARAM)

    Sauriez-vous m'indiquer la procédure pour manipuler ma grille (pour l'accès aux données, cela ira je pense)

    Merci beaucoup !
    T.

  2. #2
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Bonjour

    J'ai fait ca avec une MSHFlexgrid

    -des textbox servent a la saisie ( une par colonne)
    -un bouton validé pour l'inséré dans la flexgrid

    je te met le bouton valider :
    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
    Private Sub CmdAjoutLigneP_Click()
     
    'MSHFlexGridSsLiB
     
     
     
        ' Verif Lib Inscrit
        If (TxtPlibCh.Text = Empty) Then
            Cancel = True ' Annule la validation de contrôle
            A = MsgBox("Veuillez saisir libellé d'entrée !, svp", vbExclamation, "")
            flag = 1
     
        'Verif Index valeur
        ElseIf (TxtPInV.Text = Empty) Then
            Cancel = True ' Annule la validation de contrôle
            A = MsgBox("Veuillez saisir un index pour le libellé !, svp", vbExclamation, "")
            flag = 1
     
        'Verif Index col
        ElseIf (TxtPInC.Text = Empty) Then
            Cancel = True ' Annule la validation de contrôle
            A = MsgBox("Veuillez saisir un index pour le libellé !, svp", vbExclamation, "")
            flag = 1
        End If
     
     
     
        If (flag = 0) Then
     
         MSHFlexGridSsLiB.Rows = MSHFlexGridSsLiB.Rows + 1     'Pour ajouter une ligne à la grille
     
        i = (MSHFlexGridSsLiB.Rows)
        MSHFlexGridSsLiB.TextMatrix(i - 1, 0) = TxtPlibCh.Text       'libéllé   (ligne/colonne)
        TxtPlibCh.Text = ""
        MSHFlexGridSsLiB.TextMatrix(i - 1, 1) = TxtPInV.Text
        TxtPInV.Text = ""
        MSHFlexGridSsLiB.TextMatrix(i - 1, 2) = TxtPInC.Text
        TxtPInC.Text = ""
        ResizeColumns Me.hdc, MSHFlexGridSsLiB
     
        End If
    End Sub
    si l'utilisateur clique sur le flexgrid il retransmet la ligne dans les textbox respective et peut modifier.

    Code quand tu clic sur la flexgrid

    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
    Private Sub MSHFlexGridSsLiB_Click()
     
     
        Dim ligne As Integer
        Dim temp As Integer
        ligne = 1
        temp = MSHFlexGridSsLiB.Row
     
     
     
        While (ligne <= (MSHFlexGridSsLiB.Rows - 1))        ' init le tableau a blanc
     
           MSHFlexGridSsLiB.Row = ligne
           MSHFlexGridSsLiB.Col = 0
           MSHFlexGridSsLiB.CellBackColor = vbWhite
           MSHFlexGridSsLiB.Col = 1
           MSHFlexGridSsLiB.CellBackColor = vbWhite
           MSHFlexGridSsLiB.Col = 2
           MSHFlexGridSsLiB.CellBackColor = vbWhite
           ligne = ligne + 1
     
        Wend
        MSHFlexGridSsLiB.Row = temp
     
     
     
     
     
     
     
        If (MSHFlexGridSsLiB.Row = 0) Then
           ' A = MsgBox("Impossible de selectionner cette ligne", vbExclamation, "")
     
        ElseIf (MSHFlexGridSsLiB.Col = 0) Then
     
     
            MSHFlexGridSsLiB.Col = 0
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 1
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 2
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 0
     
     
            Form1.TxtPlibCh.Text = MSHFlexGridSsLiB.Text
            MSHFlexGridSsLiB.Col = MSHFlexGridSsLiB.Col + 1
            Form1.TxtPInV.Text = MSHFlexGridSsLiB.Text
            MSHFlexGridSsLiB.Col = MSHFlexGridSsLiB.Col + 1
            Form1.TxtPInC.Text = MSHFlexGridSsLiB.Text
     
     
        ElseIf (MSHFlexGridSsLiB.Col = 1) Then
     
            MSHFlexGridSsLiB.Col = 0
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 1
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 2
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 1
     
            Form1.TxtPInV.Text = MSHFlexGridSsLiB.Text
            MSHFlexGridSsLiB.Col = MSHFlexGridSsLiB.Col + 1
            Form1.TxtPInC.Text = MSHFlexGridSsLiB.Text
            MSHFlexGridSsLiB.Col = MSHFlexGridSsLiB.Col - 2
            Form1.TxtPlibCh.Text = MSHFlexGridSsLiB.Text
     
        ElseIf (MSHFlexGridSsLiB.Col = 2) Then
     
            MSHFlexGridSsLiB.Col = 0
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 1
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 2
            MSHFlexGridSsLiB.CellBackColor = COLOR
            MSHFlexGridSsLiB.Col = 2
     
     
            Form1.TxtPInC.Text = MSHFlexGridSsLiB.Text
            MSHFlexGridSsLiB.Col = MSHFlexGridSsLiB.Col - 1
            Form1.TxtPInV.Text = MSHFlexGridSsLiB.Text
            MSHFlexGridSsLiB.Col = MSHFlexGridSsLiB.Col - 1
            Form1.TxtPlibCh.Text = MSHFlexGridSsLiB.Text
     
        End If
     
    End Sub
    Accessoire : la ligne se colore en gris quand elle est sélectionné

    le code du bouton de modif :

    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
    Private Sub CmdmodifP_Click()
     
    'MSHFlexGridSsLiB
     
       If (MSHFlexGridSsLiB.Row = 0) Then
          '  A = MsgBox("Impossible de modifier la ligne", vbCritical, "Erreur")
     
       ElseIf (TxtPlibCh.Text = Empty Or TxtPInV.Text = Empty Or TxtPInC.Text = Empty) Then
            A = MsgBox("Un des champs desiré est vide donc impossible de modifier la ligne", vbCritical, "Erreur")
       Else
            MSHFlexGridSsLiB.TextMatrix(MSHFlexGridSsLiB.Row, 0) = TxtPlibCh.Text
            MSHFlexGridSsLiB.TextMatrix(MSHFlexGridSsLiB.Row, 1) = TxtPInV.Text
            MSHFlexGridSsLiB.TextMatrix(MSHFlexGridSsLiB.Row, 2) = TxtPInC.Text
            TxtPlibCh.Text = ""
            TxtPInV.Text = ""
            TxtPInC.Text = ""
       End If
    End Sub

    Cdt Over

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Comment modifier le contenu d'une cellule d'une Flexgrid?

    Trouvé dans la MSDN
    Dans ce scénario, vous pouvez modifier des cellules d'un tableur Hierarchical FlexGrid. Ce scénario démontre certaines des capacités des événements et de conteneurs Hierarchical FlexGrid, et montre comment ce contrôle peut être utilisé, avec les contrôles Visual Basic standard, pour créer un tableur avec modification directe.
    Dans entrer le mot à rechercher

    Taper: Flexgrid

    Dans sélectionner la rubrique
    Cliquer sur: Édition de cellules dans un tableur Hierarchical FlexGrid

    A+

  4. #4
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Salut

    La réponse m'est adressé ?

    Car je l'avais déjà vu, mais pas réussi a le mettre en place.
    Donc en général quand j'arrive pas a quelque chose j'essaye de penser a un autre algo pour arrivée a mes fin

    De plus il s'avérait que la méthode que j'ai prise soit la meilleur pour mon projet.
    Mais bien sur on peut faire autrement selon ces besoins

    Cdt
    Over

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour Over,

    Ma réponse est pour les deux.

    Car je l'avais déjà vu, mais pas réussi a le mettre en place.
    Si,si ,je l'ai mis en place et celà fonctionne très bien ( avec bien sûr quelques modifications et ajout de code ).
    Il suffit de cliquer sur la cellule et de modifier son contenu,le textbox prend la place et la dimension de la cellule,et puis de faire Enter.

    Si tu veux plus d'information,fais un post.

    A+

  6. #6
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Non non ca va merci

    Finalement après une recherche approfondie j'ai trouvé le bout de code
    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
    Option Explicit
     
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
                    (ByVal lpPrevWndFunc As Long, _
                     ByVal Hwnd As Long, _
                     ByVal Msg As Long, _
                     ByVal wParam As Long, _
                     ByVal lParam As Long) As Long
     
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
                    (ByVal Hwnd As Long, _
                     ByVal nIndex As Long, _
                     ByVal dwNewLong As Long) As Long
     
    Private Const GWL_WNDPROC = -4
    Private Const WM_SIZE = &H5
    Private Const WM_PAINT = &HF
     
    Private LngPrevWndProc  As Long
    Private IsHooked        As Boolean
    Private HookedHWND      As Long
     
     
    Public Sub Hook(Hwnd As Long)
        'Mise en place du hook s'il n'est pas déjà actif
        If IsHooked = False Then
            HookedHWND = Hwnd
            LngPrevWndProc = SetWindowLong(HookedHWND, GWL_WNDPROC, AddressOf WindowProc)
            IsHooked = True
        End If
    End Sub
     
    Public Sub Unhook()
        'Suppression du hook s'il est actif
        Dim LngTemp As Long
        If IsHooked = True Then
            LngTemp = SetWindowLong(HookedHWND, GWL_WNDPROC, LngPrevWndProc)
            IsHooked = False
        End If
    End Sub
     
    Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        WindowProc = CallWindowProc(LngPrevWndProc, hw, uMsg, wParam, lParam)
        If uMsg = WM_SIZE Or uMsg = WM_PAINT Then
          'Si les evenements Size ou paint arrive
            If frmMain.TextSaisie.Visible = True Then
              'Si la textbox est visible donc en mode édition...
                If (frmMain.TextSaisie.Left <> frmMain.MSFlexGrid1.CellLeft + frmMain.MSFlexGrid1.Left) Or _
                    (frmMain.TextSaisie.Top <> frmMain.MSFlexGrid1.CellTop + frmMain.MSFlexGrid1.Top) Then
                    'Si la cellule active c'est déplacée par rapport au texte à éditer
                    'Remise en place
                    frmMain.CheckTexte
                End If
                frmMain.TextSaisie.Width = frmMain.MSFlexGrid1.CellWidth
            End If
        End If
    End Function
    Le code n'est pas de moi mais fonctionne très bien.


    Du coup tu peux soit passer comme moi par des textbox, soit directement via la grille plus qu'a choisir



    Merci iclic

Discussions similaires

  1. Afficher et modifier le contenu d'une table
    Par JustBeFree dans le forum BIRT
    Réponses: 9
    Dernier message: 03/03/2015, 16h37
  2. Réponses: 2
    Dernier message: 06/10/2009, 13h13
  3. Afficher et modifier le contenue d'une table sql
    Par DeWaRs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/01/2009, 20h36
  4. [Upload] Modifier le contenu d'une liste box automatiquemen
    Par Phenomenium dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 21h42
  5. modifier le contenu d'une table avec innerHTML
    Par francon81 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/05/2005, 09h02

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