Donnez votre avis..
INTERFACE GAMBAS
LOGICIELS GAMBAS 3
TUTORIELS
=Bibliothèque
|
GRIDVIEW - Imprimer le contenu
IMPRIMER LE CONTENU D'UNE GRIDVIEW
Bonjour, aujourd'hui, Bernard nous livre une fonction qui permet d'imprimer le contenu d'une Gridview et de le répartir sur une ou plusieurs pages. Pour utiliser cette fonction, je met à disposition un exemple d'utilisation. Mais, comme vous le constaterez , c'est simple. Il suffit de créer une Gridview, de la remplir, de créer un bouton , et dans la fonction Click de ce bouton, faite appel à la fonction impression de Bernard par la commande : imprimgrid(magridview) magridview etant bien entendu la gridview que vous avez créé. Voici le code au complet : PUBLIC SUB ImprimGrid(grd AS Object) DIM c, r, col, rang, largeur, hauteur, nl, np, i, j, MargeL, MargeB AS Integer DIM page AS Integer[500] DIM p$ AS String DIM coef AS Float 'Printer.resolution = 300 IF Printer.Setup() THEN RETURN coef = CInt((Printer.Resolution / Desktop.Resolution) - 1) MargeL = 16 * coef MargeB = 20 * coef IF Printer.Portrait = TRUE THEN SWAP MargeB, MargeL col = MargeL FOR c = 0 TO grd.Columns.Count - 1 'largeur de la grille largeur += grd.Columns[c].Width NEXT np = 1 FOR r = 0 TO grd.Rows.Count - 1 'Hauteur de la grille et on defini le nombre de pages hauteur += grd.Rows[r].Height IF hauteur * coef > Printer.Height - (64 * coef) THEN page[np] = nl INC np nl = 0 hauteur = 0 ENDIF INC nl NEXT page[np] = nl ' nombre de ligne pour la derniere page( ou la première si il n'y en a qu'une) IF largeur * coef > Printer.Width THEN coef = coef * (Printer.Width / (largeur * (coef * 2))) ' ELSE ' coef = 5 ENDIF FOR i = 1 TO np ' nombre pages col = MargeL rang = MargeB Draw.Begin(Printer) 'Global.HeaderGrid(grd, coef, col, rang) FOR c = 0 TO grd.Columns.Count - 1 'imprimer le header Draw.FillStyle = 2 Draw.FillColor = Color.Gray Draw.Rect(col, rang, grd.Columns[c].Width * coef, MargeB) Draw.Text(grd.Columns[c].Text, col + (2 * coef), rang) col += grd.Columns[c].Width * coef NEXT rang += grd.Rows.Height * coef 'for r=0 to page(i) 'nombre ligne par page 'FOR r = page[i - 1] TO grd.Rows.Count - 1 FOR r = page[i - 1] TO (page[i - 1] + page[i]) - 1 col = MargeL FOR c = 0 TO grd.Columns.Count - 1 'On imprime les grilles Draw.FillColor = grd[r, c].Background IF grd[r, c].Background <> -1 THEN Draw.FillStyle = Fill.Solid ELSE Draw.FillStyle = 0 ENDIF Draw.Rect(col, rang, grd.Columns[c].Width * coef, grd.Rows.Height * coef) col += grd.Columns[c].Width * coef NEXT col = MargeL FOR c = 0 TO grd.Columns.Count - 1 'On imprime le text Draw.Font = grd[r, c].Font Draw.Foreground = grd[r, c].Foreground p$ = "" IF Draw.TextWidth(grd[r, c].Text) > (grd.Columns[c].Width * coef) - (2 * coef) THEN FOR j = 1 TO Len(grd[r, c].Text) IF Draw.TextWidth(p$) < (grd.Columns[c].Width * coef) - (12 * coef) THEN p$ &= Mid$(grd[r, c].Text, j, 1) ENDIF NEXT ELSE p$ = grd[r, c].Text ENDIF Draw.Text(p$, col + (2 * coef), rang, (grd.Columns[c].Width * coef) - (2 * coef), grd.Rows.Height * coef, grd[r, c].Alignment) col += grd.Columns[c].Width * coef NEXT rang += grd.Rows.Height * coef NEXT p$ = "_ " & Trim(Str$(i)) & " _" Draw.Text(p$, (Printer.Width - Draw.TextWidth(p$)) / 2, Printer.Height - (48 * coef)) Draw.End NEXT END Merci à Bernard pour sa contribution. Date de création : 21/05/2010 @ 16:36 Réactions à cet article
| ACCES RAPIDE
RECHERCHE
LES INSTRUCTIONS
LES COMPOSANTS
Divers
INSTRUCTIONS
Où ça, qui ça?
VISITES
visiteurs visiteurs en ligne ARCHIVES GAMBAS 1/2
|