Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 641 fois - Téléchargée 15 fois
Private pos_cols() As Single ' array qui servira à stocker les positions des colonnes de la grille Private Sub Form_Activate() With MSFlexGrid1 '----------------------------------------- .Font.Name = "Tahoma" ' | Toute cette partie n'est là que pour avoir .Font.Size = 12 ' | une "matière" (une msflexgrid rmplie de 5 .ColWidth(0) = 2200 ' | lignes sur 3 colonnespour y faire notre test) .ColWidth(1) = 2700 ' | Dans la pratique, tout cela a été construit .ColWidth(2) = 3000 ' | avec vos propriétés (en mode création) et For i = 0 To 4 ' | vos données. For j = 0 To 2 ' | .TextMatrix(i, j) = "Ligne " & i & "/colonne " & j ' | Next ' | Next ' | End With '------------------------------------------------- With Picture1 '----------------------- on utilise, pour ce test, une picturebox, de sorte à .Font.Name = MSFlexGrid1.Font.Name '| ne pas gaspiller encre et papier .Font.Size = MSFlexGrid1.Font.Size '| Pour une impression : utiliser l'objet Printer au lieu de cette picturebox .ScaleMode = 6 ' | On donne à l'objet de destination (ici une picturebox) l'échelle End With '--------------------------- de son choix et la même police que celle de la grille à traiter '-------------- on crée un array des positions des fins de colonne------------------ ReDim pos_cols(MSFlexGrid1.Cols - 1) For i = 1 To UBound(pos_cols) ' important : quelle que puisse être l'échelle du Form, les largeurs de colonnes d'une msflexgrid ' sont toujours définies en Twips (lire l'aide VB6 à ce sujet) et non dans l'échelle du Form ' il nous faut dont convertir ces twips en unités logiques de l'objet de destination. ' donc : ne surtout pas toucher à vbTwips dans la ligne ci-dessous pos_cols(i) = pos_cols(i - 1) + ScaleX(MSFlexGrid1.ColWidth(i - 1), vbTwips, Picture1.ScaleMode) Next End Sub Private Sub Command1_Click() With Picture1 hautligne = .TextHeight("N'importe quoi") ' calcul de la hauteur graphique d'une ligne, dans cette police For i = 0 To MSFlexGrid1.Rows - 1 '------------------- For j = 0 To MSFlexGrid1.Cols - 1 ' | Il ne nous reste plus qu'à envoyer le contenu .CurrentX = pos_cols(j) ' | de chaque cellule de chaque ligne (double boucle) Picture1.Print MSFlexGrid1.TextMatrix(i, j); ' | Aux positions définies dans l'array des positions Next ' | A chaque saut de ligne, on revient au 1er index (0) .CurrentX = pos_cols(0) ' | de cet array .CurrentY = .CurrentY + hautligne * 1.06 ' | (* 1.06 ou par ce que vous préférez, pour "aérer un peu) Next ' | End With '--------------------------------------------- End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.