Outils d'impression tableaux et documents avec mise en page pour vb6

Soyez le premier à donner votre avis sur cette source.

Vue 14 517 fois - Téléchargée 1 672 fois

Description

(Nouvelle version avec correction Bug le 3/02/04)

Cette librairie permet de créer et d'imprimer des tableaux ou des documents en couleur en respectant les polices de caractères choisies etc...
Par exemple, les chiffres peuvent être en Arial Gras taille 12 et alignés à droite dans les colonnes.

De nouvelles méthodes permettent de tracer les lignes et colonnes ainsi que de définir des couleurs de fonds par colonnes, lignes ou même plages de cellules.
J'ai également fais en sorte que la méthode découpe les tableaux sur plusieurs pages si besoin. (A tester...)

Je donne plus bas un exemple d'utilisation plus complet comme demandé qui
correspond à la capture d'écran.

Il faut enregistrer la dll (regsvr32) et la référencer dans son projet VB.
email : joshrbz@yahoo.fr

Source / Exemple :


Public Sub Test()
     Dim cPrintDoc As clsPrinterDocument
    Dim cLine As clsPrintLine
    Dim cPTab As clsPrintTab
    Dim cFoot As clsPrintParagraph
    Dim cFooter As clsPrintParagraph
    Dim cHeader As clsPrintParagraph
    Dim i As Integer
    
On Error GoTo DoPrintDocumentGotError
    
    'Init
    Set cPrintDoc = New clsPrinterDocument
    Set cFooter = New clsPrintParagraph
    Set cHeader = New clsPrintParagraph
    
    ' on laisse le pied de document vide mais on ajoute une ligne dans le
    ' header
    Set cLine = New clsPrintLine
    cLine.InitAsText "Exemple de tableaux en couleur", "Courier New", 6, True, True, , True
    cLine.SetXY 1000, 0
    cHeader.AddLine cLine
    
    cPrintDoc.Init cHeader, cFooter
    
    ' Marge de gauche
    cPrintDoc.sLeftMargin = 500
    ' Affiche le nombre de page en bas à droite
    cPrintDoc.blnWithPageNumber = True
    
    ' Corps du document : Exemple de ligne
    Set cLine = New clsPrintLine
    cLine.InitAsText "Intitulé de Document", "Times New Roman", 14, True
    cLine.SetXY 1000, 100
    cPrintDoc.AddPrintableObject cLine
     
    ' Corps du document : Exemple de ligne adresse
    Set cLine = New clsPrintLine
    cLine.InitAsText "Adresse", "Arial"
    cLine.SetXY 6000, 500
    cPrintDoc.AddPrintableObject cLine
    
    ' Tableau
    '*******************************************************
    Set cPTab = New clsPrintTab
    ' Initialise le tableau avec 5 colonnes en coordonnées 0,1000
    cPTab.Init 5, 0, 1000, , True
    'largeur et alignement pour chaque colonne
    cPTab.SetColProperties 0, 5000, , False
    cPTab.SetColProperties 1, 1200, , True
    cPTab.SetColProperties 2, 1200, , True
    cPTab.SetColProperties 3, 1200, , True
    cPTab.SetColProperties 4, 1200, , True

    'Affiche la bordure ?
    cPTab.blnWithBorder = True
    ' taille de la bordure
    cPTab.sngBorderWidth = 3
    'Affiche les traits de colonnes ?
    cPTab.blnWithColumn = True
    'Affiche les traits de lignes  ?
    cPTab.blnWithRow = True
    ' Couleur de fond générale
    cPTab.lBackGroundColor = &HFFC0FF
    
    ' couleur de la Colone 1
    Call cPTab.SetColBackGround(1, &HFF8080)
    ' couleur de la ligne 4
    Call cPTab.SetRowBackGround(4, vbMagenta)
    ' Les couleurs des lignes prédomines sur les colonnes ?
    cPTab.blnRowOverColBorder = False
    ' Couleur de la matrice ou plage de cellules de coordonnées (10,1) - (12,3) = vert
    Call cPTab.SetCellBackGround(10, 1, 12, 3, vbGreen)
    
    ' on remplit le tableau avec des valeurs pipeau : 20 lignes
    For i = 0 To 20
        cPTab.SetValue i, 0, "Ligne n " & i
        cPTab.SetValue i, 1, 100 * i
        cPTab.SetValue i, 2, Format(i * 6.55957, "# ###.00")
        cPTab.SetValue i, 3, i & "%"
        cPTab.SetValue i, 4, CStr(i)
    Next i

    ' on ajoute notre tableau au document à imprimer
    cPrintDoc.AddPrintableObject cPTab
       
    'on crée un second tableau : Exemple avec température
    '*************************************************************************************
    Set cPTab = New clsPrintTab
    ' Initialise le tableau avec 2 colonnes en coordonnées 2000,8000
    cPTab.Init 2, 2000, 8000, , True
    'largeur et alignement pour chaque colonne
    cPTab.SetColProperties 0, 2000, , False
    cPTab.SetColProperties 1, 1000, , True
    
    'Affiche la bordure ?
    cPTab.blnWithBorder = False
    'Affiche les traits de colonnes ?
    cPTab.blnWithColumn = False
    'Affiche les traits de lignes  ?
    cPTab.blnWithRow = True
    
    ' couleur de la Colonne 1
    Call cPTab.SetColBackGround(1, &HC0FFC0)
    ' couleur de la ligne 1
    Call cPTab.SetColBackGround(1, &HE0E0E0)
    ' Les couleurs des lignes prédomines sur les colonnes ?
    cPTab.blnRowOverColBorder = True
    
    ' on remplit le tableau avec des valeurs pipeau : 3 lignes
    cPTab.SetValue 0, 0, "MOIS"
    cPTab.SetValue 0, 1, "temp°"
    cPTab.SetValue 1, 0, "Janvier"
    cPTab.SetValue 1, 1, "3°C"
    cPTab.SetValue 2, 0, "Février"
    cPTab.SetValue 2, 1, "8°C"
    cPTab.SetValue 3, 0, "Mars"
    cPTab.SetValue 3, 1, "12°C"
       
    ' on ajoute notre tableau au document à imprimer
    cPrintDoc.AddPrintableObject cPTab
       
    '*******************************************************
    ' Partie Pied de document imprimé que sur la dernière page
    Set cFoot = New clsPrintParagraph
    
    Set cLine = New clsPrintLine
    cLine.InitAsText "Veuillez blablabla", "Arial"
    cLine.SetXY 500, 0
    cFoot.AddLine cLine
    

    Call cPrintDoc.SetDocumentFooter(cFoot)
    
    'On lance l'impression !!!!!!!
    cPrintDoc.DoPrint
    
    Exit Sub
DoPrintDocumentGotError:
    MsgBox "Print Error : " & Err.Description
End Sub

Conclusion :


Désolé pour l'API approximative...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
12
Date d'inscription
mercredi 13 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2008

salut !
limprime écran systeme me plait beaucoup seulement je dispose d'une version 2005 de VB et au moment de la conversion, selon VB, il manque un tas de fichiers DLL entre autres..
Est ce que quelqu'un a deja essayé de convertir ?
PS : ce n'est pas qu'avec ce programme que j'ai ce pb..
merci
Messages postés
28
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
17 octobre 2006

Bjr,
Ben moi elle me convient bien ta dll, mais ce qui est gênant c'est qu'on ne puisse pas changer la taille de police dans les tableaux, de même pour l'alignement du texte dans les cellules.
A+
Messages postés
1
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
30 novembre 2004

Salut à tous !

On se calme.

L'idée d'imprimer l'écran par recopie est un vieux casse tête que j'ai partiellement résolu en recopiant pixel écran pour dot imprimante sur Super Base SBWIN 8.00

Je ne vois pas comment tu procède pour découper une image au milieu de l'écran par exemple aux coordonnées haut gauche; bas droite : 200,200 ; 300,300

C'est triviale certainement mais jusqu'à présent personne n'a proposé de sol en VB6. !!! A ma connaissance.

Plus compliqué : comment fait-tu pour construire une feuille à imprimer en A4 avec plusieurs images correctement placées en 3x3, 4x5 etc...

J'ai également résolu partiellement ce problème en occulant la partie droite de l'image par écrasement par l'image suivante venant à droite.

Pour le code des DLL je ne m'en inquiète pas ma version initiation ne me premet pas de les créer et d'ailleurs cela ne me gène pas exemple mon programme de gestion de problème d'échec en 3 langues : Super Base SBWIN 8.00, (5 feuilles form, 1450 objets 660 pages A4 de code !) qui fait le bonheur de centaines de problémistes dans le monde, n'a pas de DLL compilé en VB (à part les classiques DLL's disponible).

A vous lire.
Messages postés
8
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
19 octobre 2005

Bnjr Josh,

Cete approche par Classe est interessante.........dans l'idée, mais (comme bcp l'ont déjà dit plus haut) l'interface semble assez complexe, et donc l'usage quasi-impossible sans disposer du Source, ne serait-ce qiue pour s'en refaire une DOC.

(a titre de comparaison, as-tu -pas hasard- essayé d'utiliser un MSChart..........officel avec la DOC ! ! ! ).
Ben ta source compilée en DLL relève du meme niveau : ne te sens pas désobligé, c'est tout de meme du niveau MicroDaube !

Je peux d'ailleurs te dire que j'aurais sans doute defini une interface plus "typée".....
A lire ton CLS...
Y
Messages postés
2
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
26 août 2004

On voit la forme mais rien de Fond. Ici on moque de ses collabarateurs, on se garde le repect , on fait pas de la Pub aussi : on se partage les idées ...
Tu veux garder la source de ta Dll c ton plein droit, a koi bon donc diffuser cette source. ...
Afficher les 12 commentaires

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.