Remplir une MsFlexGrid

cs_latatia Messages postés 15 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 22 mars 2004 - 9 mars 2004 à 08:47
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 - 9 mars 2004 à 16:12
Comment fait-on pour remplir une msFlexGrid en VB6
merci

7 réponses

cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
9 mars 2004 à 09:59
labout
Mets un control data Adodc sans rien lui définir

Sous Option Explicit
Private Const MARGIN_SIZE = 60 ' en Twips
' variables pour le déplacement de colonne
Private m_bDragOK As Boolean
Private m_iDragCol As Integer
Private xdn As Integer
Private ydn As Integer

dans le load
' defini le contenu de ta requete
req='select * from table)
AdoDc.ConnectionString = ConnectStringData
AdoDc.RecordSource = req
AdoDC.Refresh

With MSHFlexGrid1
'.Redraw = False
' définir les largeurs des colonnes de la grille

.ColWidth(0) = 1100
.ColWidth(1) = 600
.ColWidth(2) = 930
.ColWidth(3) = 1035
.ColWidth(4) = 1200
.ColWidth(5) = 1200
.ColWidth(6) = 850
.ColWidth(7) = 1600
.ColWidth(8) = 1600
.ColWidth(9) = 930
.ColWidth(10) = 850
.ColWidth(11) = 1185
.ColWidth(12) = 1485
.ColWidth(13) = 2100
.ColAlignment(0) = flexAlignCenterCenter ' centre
.ColAlignment(1) = flexAlignRightCenter ' droite
.ColAlignment(4) = flexAlignRightCenter ' centre
.ColAlignment(5) = flexAlignRightCenter ' droite
.ColAlignment(6) = flexAlignRightCenter
.ColAlignment(7) = flexAlignRightCenter
.ColAlignment(8) = flexAlignRightCenter ' centre
.ColAlignment(9) = flexAlignCenterCenter ' centre
.ColAlignment(11) = flexAlignRightCenter ' droite
'.ColAlignment(13) = flexAlignRightCenter ' droite
' définir la fusion et le tri des colonnes de la grille
For i = 0 To .Cols - 1
.MergeCol(i) = True
Next i

.Sort = flexSortGenericDescending

' définir le style de la grille
.AllowBigSelection = True
' .FillStyle = flexFillRepeat

' mettre l'en-tête en gras
.Row = 0
.Col = 0
If Not AdoDC.Recordset.EOF Then
.RowSel = .FixedRows
End If
.ColSel = .Cols - 1
.CellFontBold = True

' estomper les autres colonnes
For i = .FixedCols To .Cols() - 1 Step 2
.Col = i
If AdoDc.Recordset.RecordCount > 0 Then
.Row = .FixedRows
End If
.RowSel = .Rows - 1
'.CellBackColor = &HC0C0C0 ' gris clair
Next i
If AdoDc.Recordset.RecordCount > 0 Then
.Row = 1
End If
.Col = 0
' .RowSel = .FixedRows - 1
.ColSel = .Cols - 1
.AllowBigSelection = False
.FillStyle = flexFillSingle
.Redraw = True
If Not AdoDc.Recordset.EOF Then
.CellBackColor = QBColor(14)
End If
.Col = 0
.CellFontBold = True
End With

ensuite

Private Sub MSHFlexGrid1_DragDrop(Source As Control, X As Single, Y As Single)
'-------------------------------------------------------------------------------------------
' le code dans les événements DragDrop, MouseDown, MouseMove et MouseUp de la grille permet de glisser /déplacer des colonnes
'-------------------------------------------------------------------------------------------

' on ne déplace pas
Exit Sub
If m_iDragCol = -1 Then Exit Sub ' pas de déplacement
If MSHFlexGrid1.MouseRow <> 0 Then Exit Sub

With MSHFlexGrid1
.Redraw = False
.ColPosition(m_iDragCol) = .MouseCol

.FillStyle = flexFillRepeat
.Col = 0
.Row = .FixedRows
.RowSel = .Rows - 1
.ColSel = .Cols - 1
' .CellBackColor = &HFFFFFF
Dim iLoop As Integer
For iLoop = .FixedCols To .Cols() - 1 Step 2
.Col = iLoop
.Row = .FixedRows
.RowSel = .Rows - 1
' .CellBackColor = &HC0C0C0
Next iLoop
.FillStyle = flexFillSingle

DoSort
.Redraw = True
End With

End Sub

Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'-------------------------------------------------------------------------------------------
' le code dans les événements DragDrop, MouseDown, MouseMove et MouseUp de la grille permet de glisser /déplacer des colonnes
'------------------------------------------------------------------------------------------
' pas de déplacement
Exit Sub
If MSHFlexGrid1.MouseRow <> 0 Then Exit Sub

xdn = X
ydn = Y
m_iDragCol = -1 ' réinitialiser l'indicateur de déplacement
m_bDragOK = True

End Sub

Private Sub MSHFlexGrid1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'-------------------------------------------------------------------------------------------
' le code dans les événements DragDrop, MouseDown, MouseMove et MouseUp de la grille permet de glisser /déplacer des colonnes
'-------------------------------------------------------------------------------------------
' pas de déplacement

Exit Sub
If Not m_bDragOK Then Exit Sub
If Button <> 1 Then Exit Sub ' mauvais bouton
If m_iDragCol <> -1 Then Exit Sub ' déplacement en cours
If Abs(xdn - X) + Abs(ydn - Y) < 50 Then Exit Sub ' déplacement encore insuffisant
If MSHFlexGrid1.MouseRow <> 0 Then Exit Sub ' l'en-tête doit être déplacée

' si nous en sommes là, commencer le déplacement
m_iDragCol = MSHFlexGrid1.MouseCol
MSHFlexGrid1.Drag vbBeginDrag

End Sub

Private Sub MSHFlexGrid1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'-------------------------------------------------------------------------------------------
' le code dans les événements DragDrop, MouseDown, MouseMove et MouseUp de la grille permet de glisser /déplacer des colonnes
'-------------------------------------------------------------------------------------------

m_bDragOK = False

End Sub

Sub DoSort()

With MSHFlexGrid1
.Redraw = False
.Col = 0
.Row = 1
.RowSel = .Rows - 1
.Sort = flexSortGenericDescending
.Redraw = True
End With

End Sub

Private Sub Form_Resize()

Dim sngButtonTop As Single
Dim sngScaleWidth As Single
Dim sngScaleHeight As Single

On Error GoTo Form_Resize_Error
With Me
sngScaleWidth = .ScaleWidth
sngScaleHeight = .ScaleHeight

' déplacer le bouton Fermer en bas à droite
With .Cmdfermer
sngButtonTop = sngScaleHeight - (.height + MARGIN_SIZE)
.Move sngScaleWidth - (.width + MARGIN_SIZE), sngButtonTop
End With
With Label2 ' texte en bas au centre
sngButtonTop = sngScaleHeight - (.height + MARGIN_SIZE)
.top = Me.height - 1020
.left = (Me.width - TextWidth(left(.Caption, 85))) / 2
End With
With Label3 ' je cherche
.left = (Me.width - TextWidth(.Caption) / 2)
.top = Cmdfermer.top + 50
End With

With MSHFlexGrid1
.height = Me.height - 2305
.width = Me.width - 150
End With

End With
Exit Sub

Form_Resize_Error:
' éviter les erreurs sur les valeurs négatives
Resume Next

End Sub

Private Sub MSHFlexGrid1_EnterCell()
Dim boucle As Integer

'Redéfinition de la couleur
For boucle = 0 To MSHFlexGrid1.Cols() - 1
MSHFlexGrid1.Col = boucle
MSHFlexGrid1.CellBackColor = QBColor(14)
MSHFlexGrid1.CellFontBold = True
Next boucle
MSHFlexGrid1.Col = 0
' MSHFlexGrid1.CellBackColor = QBColor(14)
' MSHFlexGrid1.CellFontBold = True

End Sub

Private Sub MSHFlexGrid1_LeaveCell()
Dim boucle As Integer
'Redéfinition de la couleur
For boucle = 0 To MSHFlexGrid1.Cols() - 1
MSHFlexGrid1.Col = boucle
MSHFlexGrid1.CellBackColor = &HFFFFFF
MSHFlexGrid1.CellFontBold = False
Next boucle
MSHFlexGrid1.Col = 0
' MSHFlexGrid1.CellBackColor = &HFFFFFF
' MSHFlexGrid1.CellFontBold = False
End Sub

Tu auras ainsi un mshflexgrid hierarchique

@+
0
cs_latatia Messages postés 15 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 22 mars 2004
9 mars 2004 à 11:04
par une connexion ADODB
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
9 mars 2004 à 13:46
labout
Ben oui
0
cs_latatia Messages postés 15 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 22 mars 2004
9 mars 2004 à 16:01
Au moment de l'affichage des données dans la FlexGrid il n'affiche que le dernier du jeu d'enregistrement est ce que tu pouraais me dire comment on fait pour afficher toutes les données, j'utilise le controle .text et lorsque j'utilise le controle addItem ça me met bien toutes les données du jeu d'enregistrement mais ça me les mets dans la même colonne

@+
0

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

Posez votre question
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
9 mars 2004 à 16:10
labout

Ce que je t'ai donné c'est pour remplir à partir d'un recordset Adodb. Si tu prends le code tel quel il marche. je l'ai tiré d'une appli qui marche depuis belle lurette
@+
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
9 mars 2004 à 16:11
labout

Ce que je t'ai donné c'est pour remplir à partir d'un recordset Adodb. Si tu prends le code tel quel il marche. je l'ai tiré d'une appli qui marche depuis belle lurette
@+
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
9 mars 2004 à 16:12
labout

Ce que je t'ai donné c'est pour remplir à partir d'un recordset Adodb. Si tu prends le code tel quel il marche. je l'ai tiré d'une appli qui marche depuis belle lurette
@+
0
Rejoignez-nous