GRILLE VB6

Mattcau59 Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 7 mai 2007 - 5 mai 2007 à 15:54
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 5 mai 2007 à 20:14
Bonjour je voudrait savoir comment mettre du noir dans "quelques" cellules d'un MSflexgrid sous VB6  avant l'éxécution du programme et aussi apres et interdire la saisie a l'intérieur de ce cellules noires. merci

25 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 mai 2007 à 18:58
JMF, j'aimerais bien que tu ne fouettes pas les chats...

Bonne journée de vote à vous, les Français...
J'espère que la proportion de gens qui vote chez vous est plus élevée que chez nous...
Ce n'est pas qu'un droit, mais une obligation morale...

MPi
0
Mattcau59 Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 7 mai 2007
5 mai 2007 à 18:59
sinn je ne sais tj pas comment mettre de la couleur (ss texte) a certaines cellules de msflexgrid AVANT l'execution du prog
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 mai 2007 à 19:04
Bah, fais comme moi et mets des Labels noir comme je t'ai expliqué.

MPi
0
Mattcau59 Messages postés 21 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 7 mai 2007
5 mai 2007 à 19:14
oui justement mais tu peu expliké plus précisément tp je voi pas tro merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
5 mai 2007 à 20:14
Bon, oublie ce que je t'ai dit pour le Label.
Le problème du Label est qu'il ne peut apparaître au-dessus de la grille.
Utilise plutôt une Picturebox en guise de case noire. Même chose pour les propriétés, Index 0, Visible False et BackColor = couleur noire.
Ici, je l'ai appelé "CaseNoire"

Ma grille se nomme Grid1

Et voici un peu comment je procède... (modifié pour les besoins de la cause...)
ça devrait te faire avancer pas mal...
J'ai peut-être aussi laissé des choses qui ne semblent pas servir ici, mais probablement dans mon programme original

Option Explicit

'Initialisation de la grille
Private Sub Form_Load()
    Dim I As Integer
   
    Grid1.Cols = 12
    Grid1.Rows = 12
   
    For I = 0 To 11
        Grid1.ColWidth(I) = 250
        Grid1.RowHeight(I) = 250
    Next
   
    Grid1.Height = (250 * 12) + (12 * 10)
    Grid1.Width = (250 * 12) + (12 * 10)
    Grid1.ScrollBars = flexScrollBarNone
   
End Sub

Private Sub Grid1_DblClick()
    Dim LblIndex As Integer
   
    'Trouver le premier index vide
    LblIndex = GetLastIndex(CaseNoire)
   
    Load CaseNoire(LblIndex)  'crée une nouvelle image noire
    'la posiitionne sur la grille
    CaseNoire(LblIndex).Move Grid1.Left + Grid1.CellLeft, _
                            Grid1.Top + Grid1.CellTop, _
                            Grid1.CellHeight, _
                            Grid1.CellWidth
   
    CaseNoire(LblIndex).Visible = True
    CaseNoire(LblIndex).ZOrder 0  'la met à l'avant-plan
   
End Sub

Private Sub Grid1_KeyPress(KeyAscii As Integer)
    Grid1.Col = Grid1.ColSel
    Grid1.Row = Grid1.RowSel
   
    Select Case KeyAscii
        Case 32  'touche Espace efface le texte
            Grid1.TextMatrix(Grid1.Row, Grid1.Col) = ""
       
        Case 65 To 90, 97 To 122  'caractères alphabétiques permis
            Grid1.TextMatrix(Grid1.Row, Grid1.Col) = UCase(Chr(KeyAscii))
           
        Case 9  'caractère Tab pour se déplacer
           
        Case Else  'le reste est refusé
            KeyAscii = 0
           
    End Select
   
    'déplacement du curseur
    If Grid1.Col < Grid1.Cols - 1 Then
        Grid1.Col = Grid1.Col + 1
    Else
        Grid1.Col = 0
        If Grid1.Row < Grid1.Rows - 1 Then
            Grid1.Row = Grid1.Row + 1
        Else
            Grid1.Row = 0
        End If
    End If
   
End Sub

Private Sub CaseNoire_DblClick(Index As Integer)
    'Effacer l'image noire lorsqu'on double-clique dessus
    Unload CaseNoire(Index)
End Sub

Function GetLastIndex(CaseNoire) As Integer
    Dim I As Integer
   
    On Error GoTo ErrLabel
   
    'ne sert à rien d'autre que générer une erreur
    'sur l'index non utilisé
    For I = 1 To CaseNoire.Count
        If Not CaseNoire(I).Visible Then
            GetLastIndex = I
        End If
    Next
   
    Exit Function
   
ErrLabel:
    GetLastIndex = I
End Function

MPi
0
Rejoignez-nous