Mattcau59
Messages postés21Date d'inscriptionmardi 6 mars 2007StatutMembreDernière intervention 7 mai 2007
-
5 mai 2007 à 15:54
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
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