IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Imprimer une table sur un PDF [WD14]


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut Imprimer une table sur un PDF
    Bonjour à tous,
    je souhaite imprimer sur un PDF une table, mais je ne sais pas comment faire(sinon je serais pas venu)
    Quel est la commande à taper ?

    Merci pour votre aide.
    AUZUR

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 50
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    Tu peux passer par un état.
    Tu créé ton état avec ta table (avec des données statiques ou dynamiques)
    et ensuite tu lance l'impression de l'état.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    iAperçu(iPDF,"C:\pdftest.pdf")
    iImprimeEtat(nomEtat, param1, param2, ..., param_n)
    Cordialement.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse, mais non, je ne peux pas passer par un état, car il ce trouve qu'il n'y a pas que ma table que j'imprime.
    En faites j'ai un bouton qui execute ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    dSauveImageBMP(IMG_SLOVAQUIE, "C:\GEO\slovaquie.bmp")
    dSauveImageBMP(IMG_Nom,"C:\GEO\Nom.bmp")
    dSauveImageBMP(entete,"C:\GEO\entete.bmp")
    dSauveImageBMP(pied, "C:\GEO\pied.bmp")
    dSauveImageBMP(Titre,"C:\GEO\titre.bmp")
    iConfigure("PDFCreator")
    iImprimeImage("C:\GEO\slovaquie.bmp", 20,100,180,210)
     
    iImprimeImage("C:\GEO\Nom.bmp", 20,60,100,80)
    iImprimeImage("C:\GEO\entete.bmp",0,0,210,20)
    iImprimeImage("C:\GEO\pied.bmp",0,280,210,300)
    iImprime(iPosY(20)+iPosX(50)+C1..Libellé+SansEspace(C1..ValeurAffichée)+C2..Libellé+SansEspace(C2..ValeurAffichée)+SAI_Saisie2..Libellé+SAI_Saisie2)
    iImprime(iPosY(250)+iPosX(80)+CA) 
    iImprime(iPosY(290)+iPosX(140)+Date)
    iImprime(iPosY(250)+iPosX(50)+Total)
    iImprimeImage("C:\GEO\titre.bmp",90,27,115,37)
    iFinImprime
    fSupprime("C:\GEO\slovaquie.bmp")
     
    fSupprime("C:\GEO\titre.bmp")
    fSupprime("C:\GEO\Nom.bmp")
    fSupprime("C:\GEO\entete.bmp")
    fSupprime("C:\GEO\pied.bmp")
    Et donc il me manque l'impression de ma table.

  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    et bien il faut continuer ce que tu as commencé, c'est à dire programmer entièrement ton impression.
    Faire une boucle des lignes de ta table puis iCadre,imprimeZone, ... etc
    et gestion du saut de page si dépassement de la hauteur de page bien sur

  5. #5
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Je pense qu'il faut que je fasse un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    POUR TOUTE LIGNE DE Tab_Couleur
    	iCadre(0,0,40,20)
    	iImprimeZone()
     
    FIN
    Mais je suis un peu perdu !

  6. #6
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Le principe est simple, il faut gérer un pointeur vertical et un pointeur horizontal pendant le parcours de la table
    Voici un exemple simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    nPosX est un entier
    nPosY est un entier
    nHauteurLigne est un entier = 5
    nLargeurColonne est un entier = 50
     
    iAperçu(i100)
     
    nPosY = 0
     
    POUR TOUTE LIGNE DE Table_Test
     
    	nPosX = 0		// Remise à zéro du pointeur horizontal
     
    	// Impression d'une cellule de la table
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(col_Colonne1, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
    	// une autre ...
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(col_Colonne2, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(col_Colonne3, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
    	// etc ...
     
    	nPosY += nHauteurLigne		// Positionnement du pointeur vertical pour la ligne suivante
    FIN
    iFinImprime()
    Dans cet exemple je n'ai pas imprimé le titre des colonnes mais le principe est le même.

    De plus j'ai nommé les colonnes et j'ai donné une largeur fixe (50) à toutes les colonnes, ce qui n'est pas top.

    Il faut fait quelque chose du genre :
    - Récupérer la liste des colonnes par TableEnumèreColonne et ensuite utiliser les indirections pour accéder à tes colonnes
    - Pour la largeur : appliquer le ratio entre la largeur de la colonne et la largeur de la table à la largeur d'impression que tu veux réserver à la table
    - tu pourrais aussi gérer l'alignement en fonction du type de la colonne
    - modifier la couleur de fond pour les lignes paires et impaires
    - etc ...

    Tu peux facilement faire une fonction générique qui te permettrait d'imprimer n'importe quelle table

  7. #7
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    J'ai donc essayé ta méthode, mais je me retrouve avec quelque chose de bizarre(voir image)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    nPosX est un entier
    nPosY est un entier
    nHauteurLigne est un entier = 5
    nLargeurColonne est un entier = 30
     
    iAperçu(i100)
     
    nPosY = 40
     
    POUR TOUTE LIGNE DE Tab_Couleur
     
    	nPosX = 20		// Remise à zéro du pointeur horizontal
     
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(Tab_Couleur.COL_CA, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
    	// une autre ...
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(Tab_Couleur.Couleur, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
     
    	// etc ...
     
    //	nPosY += nHauteurLigne		// Positionnement du pointeur vertical pour la ligne suivante
    FIN
    Images attachées Images attachées  

  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Parce que tu as mis en commentaire le passage à la ligne suivante

  9. #9
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Ah oui pardon j'avais pas vu...
    Donc mon tableau s'imprime bien, mais les couleurs ne sont pas dedans

  10. #10
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    les couleurs ne sont pas dedans
    ça veut dire quoi ça ?
    Une de tes colonnes contient un code couleur que tu veux voir apparaître ?

    Si c'est le cas il faut modifier le iCadre pour affecter la couleur de fond souhaitée

  11. #11
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Désolé pour le retard !
    Donc, ce qu'il ce passe, c'est que ma table s'insère bien sur mon PDF, avec dans ma première colonne les CA souhaités, mais dans ma seconde colonne, je voudrais avoir mes couleurs(pas le code couleur, mes couleur propement dit).
    Si je code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    POUR TOUTE LIGNE DE Tab_Couleur
     
    	nPosX = 20		// Remise à zéro du pointeur horizontal
     
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(Tab_Couleur.COL_CA, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
    	// une autre ...
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(Tab_Couleur.Couleur2, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
     
    	nPosY += nHauteurLigne		// Positionnement du pointeur vertical pour la ligne suivante
    FIN
    je me retrouve avec mon code couleur, mes pas avec ma couleur(normal), donc je me suis dit que si je m'étais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    POUR TOUTE LIGNE DE Tab_Couleur
     
    	nPosX = 20		// Remise à zéro du pointeur horizontal
     
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(Tab_Couleur.COL_CA, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
    	// une autre ...
    	iCadre(nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	iImprimeZone(Tab_Couleur[Tab_Couleur].Couleur..CouleurFond = Tab_Couleur[Tab_Couleur].Couleur2, nPosX, nPosY, nPosX + nLargeurColonne, nPosY + nHauteurLigne)
    	nPosX += nLargeurColonne
     
     
    	nPosY += nHauteurLigne		// Positionnement du pointeur vertical pour la ligne suivante
    FIN
    Je pourrais avoir ma couleur, mais non ! Ce serrais trop simple !

    Que faire ?

  12. #12
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    Relis mon message précédent et regarde l'aide de la fonctions iCadre

    C'est iCadre qui va te permettre d'afficher le fond en couleur
    Le iImprimeZone devient inutile dans ce cas

  13. #13
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Ah oui, Ok merci pour tous.
    Ca fonctionne, mais j'ai quand même un petit soucis, car la couleur des traits change aussi.
    N'y a t-il pas un moyen pour que les traits reste noir ???

  14. #14
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Citation Envoyé par AUZUR Voir le message
    N'y a t-il pas un moyen pour que les traits reste noir ???
    Pas avec une seule instruction, tu dois faire 2 iCadre
    - un pour le fond de couleur
    - un autre sans fond avec le cadre noir

  15. #15
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Merci ça marche.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD16] Impossible d'imprimer une table sur PDF
    Par Céroline77 dans le forum WinDev
    Réponses: 6
    Dernier message: 04/04/2014, 11h50
  2. Changer le nom d'une table sur SQL server avec une requete
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/02/2014, 23h35
  3. Réponses: 2
    Dernier message: 27/03/2010, 10h48
  4. Réponses: 4
    Dernier message: 02/05/2005, 20h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo