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

C++Builder Discussion :

creer un apercu avant impression d'un StringGrid


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut creer un apercu avant impression d'un StringGrid
    Je souhaiterais faire un apercu avant impression d'un StringGrid je ne vois pas quel composant utiliser en sachant que je dois respecter les proportions de la page que l'on va imprimer la j'ai besoin d'un coup de pouce car je n'ai rien trouve d'interressant pour demarrer.

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    En utilisant un Timage comme support pour l'apercu est il posssible de le rendre proportionnel a une feuille A4 en ayant du texte et du graphique.
    Pour du graphique il y a je crois la fonction StretchDraw.
    Pour le texte je n'ai encore rien trouve.
    J'ai besoin d'un coup de pouce pour demarrer svp.

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Je commance a entrevoir une solution a mon probleme j'ai effectue quelques calculs manuel pour commencer.
    Je pense utiliser la fonction GetDeviceCaps
    Pour commencer a programmer je ne sais pas recuperer le Handle de l'ecran et de l'imprimante quelque soit l'endrois ou on le fait dans le programme, je ne voudrais pas activer l'imprimante pour recuperer le Handle mais en meme temps je voudrais recuperer celui de l'ecran.

  4. #4
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut
    Salut Blondelle,

    Super ton nouvel avatar...
    (-je suis peut être à la bourre)

    Pour ce qui est de l'aperçu ça t'intéresserait de le faire avec un QuickReport ou en fait tout simplement un code pour l'impression de la grille par un QuickReport qui lui contient une fonction d'aperçu?

    Mattetfamilly.

    P.S. je viens de revoir tes autres mails et je pense que cela ne t'intéresse pas, ce n'est pas du tout l'appproche que tu as eu pour le reste de ton dévellopement...

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    merci Mattetfamilly

    Mattetfamilly a ecrit:
    Salut Blondelle,

    Super ton nouvel avatar...
    (-je suis peut être à la bourre)
    C'est un cadeau du pere noel 2005 car j'ai ete tres sage.

    Je suis interresse par ton code car la en ce moment je seche sur mon probleme je n'arrive pas a mettre en pratique mes idees.

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Mattetfamilly a ecrit
    Pour ce qui est de l'aperçu ça t'intéresserait de le faire avec un QuickReport ou en fait tout simplement un code pour l'impression de la grille par un QuickReport qui lui contient une fonction d'aperçu?
    Je suis interresse par ta fonction d'appercu Mattetfamilly pour l'impression du StringGrid

  7. #7
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut a suivre
    Bonsoir,

    Ok je me mets un mail pour penser à le récupérer demain au boulot.

    Mattetfamilly

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Mattetfamilly a ecrit
    Bonsoir,

    Ok je me mets un mail pour penser à le récupérer demain au boulot.

    Mattetfamilly
    Je te remercie Mattetfamilly je te tiens au courant de ce que je pourrez faire comme apercu

  9. #9
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Moi je le fais, et je passe par le TImage et cela fonctionne parfaitement.
    As tu déjà effectué l'impression du StringGrid?
    Pour ce qui est du GetDeviceCap c'est aussi cela que j'utilise pour les fonts

  10. #10
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    BOUBOU81 a ecrit:
    Moi je le fais, et je passe par le TImage et cela fonctionne parfaitement.
    As tu déjà effectué l'impression du StringGrid?
    Pour ce qui est du GetDeviceCap c'est aussi cela que j'utilise pour les fonts
    Oui j'ai fais l'impression du StringGrid le code a fais l'objet d'un post sur le Forum.
    L'apercu serait pour effectuer la mise en page
    - NB de colonne par page.
    - NB de ligne par page.
    - Marges Haute.
    - Marge Gauche.
    ce qui demandera de definir les dimensions des rectangles du StringGrid et on visualisera ce que l'on va imprimer sans imprimer.

  11. #11
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Perso , je ne sais pas si c'est la meilleur solution je passe par des MetaFile
    et le metafilecanvas apres pour l'apercu je passe avec StretchDraw
    mon metafilecanvas au canvas de mon TIMAGE, ou draw sur le Printer
    Et cela fonctionne correctement si tu recuperes la taille de la page d'imprimante, et que tu mets ton metafilecanvas a la taille de cette page

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    BOUBOU81 a ecrit:
    Perso , je ne sais pas si c'est la meilleur solution je passe par des MetaFile
    et le metafilecanvas apres pour l'apercu je passe avec StretchDraw
    mon metafilecanvas au canvas de mon TIMAGE, ou draw sur le Printer
    Et cela fonctionne correctement si tu recuperes la taille de la page d'imprimante, et que tu mets ton metafilecanvas a la taille de cette page
    La meilleur solution est celle qui fonctionne.
    Je ne connais pas les MetaFile je ne sais donc pas les utiliser.
    A tu un exemple pour pouvoir demarrer.
    Je te remercie d'avance.

  13. #13
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai une idee qui vient de me traverser l'esprit est ce qu'il est possible de copier, ou transferer le Canvas par exemple de l'impression, vers le Canvas d'un TImage.
    Si oui comment faire.

  14. #14
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut mon code...
    Bonsoir,

    Moi aussi, à un moment donné, je passes par du Metafile:
    pour déterminer le nombre de page / enregistrer / imprimer / et il semble aussi pour l'aperçu.

    Voici un petit programme qui fait impression / sauvegarde / chargement / consultation / réimpression.
    Pièce jointe 3229
    Dans la fenêtre Etalcomplet, il yua quelques fonctions supplémentaires pour l'impression d'étiquettes.

    Ce code permet:
    • d'imprimer une grille avec titre en 2 lignes (revoir si les titres sont nécessaires et s'ils ne prennent pas trop de place par rapport au grille.
    • de sauvegarder le fichier image de cette grille dans un fichier
    • de charger ce fichier pour le consulter ultérieurement.
    • réimprimer le contenu du fichier
    • Possibilité d'indiqué un n° d'identification du document avec n° et date de révision.


    Attention, il utilise QuickReport et son affillié: QRPreview pour la consultation.

    A priori, ce code nécessite d'être repris pour ton utilisation: insertion du code pour l'affichage et affichage de la fenêtre de Prévisualisation juste avant l'impression.
    Dans la fenêtre Etalcomplet, juste après le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            EtalComplet->QuickRep1->Prepare();
    insére le code suivant
    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
     
            Vucertif->QRPreview1->QRPrinter=EtalComplet->QuickRep1->QRPrinter;
            Vucertif->CSpinEdit1->MaxValue=Vucertif->QRPreview1->QRPrinter->PageCount;
            if(Vucertif->CSpinEdit1->MaxValue==1)
                    Vucertif->CSpinEdit1->Enabled=false;
            else    Vucertif->CSpinEdit1->Enabled=false;
            Vucertif->QRPreview1->Zoom=Vucertif->CSpinEdit2->Value;
            Vucertif->QRPreview1->PageNumber=1;
            Vucertif->CSpinEdit1->Value=1;
            Vucertif->Label3->Caption=IntToStr(CSpinEdit1->MaxValue);
            Vucertif->Label2->Enabled=true;
            Vucertif->Label3->Enabled=true;
            Vucertif->Label4->Enabled=true;
            Vucertif->Label5->Enabled=true;
            Vucertif->Label6->Enabled=true;
            Vucertif->CSpinEdit1->Enabled=true;
            Vucertif->CSpinEdit2->Enabled=true;
            Vucertif->Imprimer1->Enabled=true;
            Vucertif->Printele->Enabled=true;
            Vucertif->ShowModal();
    Et dans ce cas, tu peux supprimer les lignes de code
    du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EtalComplet->PrintQRP
    L'opérateur valide l'impression en ordonnant une impression dans la fenêtre de consultation.
    Tu peux mettre un élément de menu "Annuler" avec un ModalResult=mrCancel pour que l'uitilisateur empêche la sauvegarde du fichier image si tu souhaites conserver cette sauvegarde.

    Cette sauvegarde prend rapidement des proportions en octets...
    Au boulot, compte tenu du nombre de fichier généré avec cette méthode (environ 5000 par an... j'ai du ajouter une fonctionnalité pour mettre dans un fichier zip le fichier généré et le résultat fut éloquent: le fichier ne faisait plus que 25% de sa taille.


    BON COURAGE

  15. #15
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut Oups: bonne idée mais bon courage...
    Citation Envoyé par blondelle
    J'ai une idee qui vient de me traverser l'esprit est ce qu'il est possible de copier, ou transferer le Canvas par exemple de l'impression, vers le Canvas d'un TImage.
    Si oui comment faire.

    J'ai déjà essayé, il semble que cela soit faisable mais je n'ai pas franchement réussi.
    Le plus difficile, et j'en avais besoin était de géré les "pages"

    Mattetfamilly.

  16. #16
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Je te remercie Mattetfamilly pour ton fichier et tes explications je vais voir comment je peus utiliser tous ca je pense en avoir pour un moment en cas de probleme je te contacterais.
    encore merci

  17. #17
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Mattetfamilly a ecrit:
    Voici un petit programme qui fait impression / sauvegarde / chargement / consultation / réimpression.
    J'ai commence a regarder ton programme j'ai corrige quelques declarations d'include par contre il y a dans la Forme "Etalcomplet" dans la fiche "certificats.cpp" un appel a CSpinEdit1 j'y ai vu un include "Cspin.h" j'ai verifie dans les fichiers include BCB il y est, mais j'ai des erreurs sur ce composant et dans les Formes je ne vois rien qui s'appelle comme cela.

  18. #18
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut
    Citation Envoyé par blondelle

    J'ai commence a regarder ton programme j'ai corrige quelques declarations d'include par contre il y a dans la Forme "Etalcomplet" dans la fiche "certificats.cpp" un appel a CSpinEdit1 j'y ai vu un include "Cspin.h" j'ai verifie dans les fichiers include BCB il y est, mais j'ai des erreurs sur ce composant et dans les Formes je ne vois rien qui s'appelle comme cela.

    En effet ce sont des paquets de composant exemple de Borland.
    CSPinEdit te permet de gérer un compteur dont tu limites les valeurs inférieures et supérieures.
    Si le paquet n'est pas installé, c'est normal que tu ne vois pas les composants

    Dans le programme il y en a trois:
    1 dans la fiche Etalcomplet: gestion de l'impression de nos étiquettes d'expéditions.
    Pour ce qui est de ton utilisation tu peux supprimer sa déclaration, mais aussi les fonctions suivantes sans problème pour l'impression des grilles:
    AddSticker
    AddStickerPos
    PrintBandOfSticker
    RinitIndexSticker
    LoadSticker
    SaveCompleteSticker


    Les deux autres sont dans la fenêtre Vucertif:
    Le 1er gére le zoom et le second gére la page en cours de consultation.
    Si tu ne peux pas intégrer le paquet correspondant, tu devras effectuer quelques modifications.

    Peux tu intégrer les composants exemple de Borland où se trouve le CSPinEDit??

    Sinon je te proposerais des modifications.

  19. #19
    Membre actif Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Points : 201
    Points
    201
    Par défaut
    Si tu ne peux pas réintégrer le paque des exemples borland (je ne sais pas du tout comment il s'apelle et mon Builder est au boulot...)

    1) dans le fichier vucertificat.h, tu crée la variable Max_Page en int.
    2) dans le fichier vucertificat.cpp, tu remplaces toutes les occurences de CSPinEdit1->MaxValue par Max_Page.
    3) dans le fichier vucertificat.cpp, tu remplaces toutes les occurences de CSPinEdit1->MinValue par 0 (valeur zéro).
    4) dans le fichier vucertificat.cpp, en tête du fichier ajoutes:
    5) dans le fichier vucertificat.cpp, en tête du fichier ajoutes:
    Remarque ce sont deux valeurs que tu pourras ajusté par lma suite en fonction du confort d'utilisation.
    6) dans le fichier vucertificat.cpp, tu remplaces toutes les occurences de CSPinEdit2->MinValue par "MinZoom"
    7) dans le fichier vucertificat.cpp, tu remplaces toutes les occurences de CSPinEdit2->MaxValue par "MaxZoom"
    8) dans le fichier vucertificat.h, tu supprimes la déclaration de CSPinEdit1
    9) dans le fichier vucertificat.h, tu supprimes la déclaration de CSPinEdit2
    10) Fais un Clique droit sur ta fiche "Etalcomplet" et choisis "voir comme texte".
    11) Dans le fichier texte ainsi affiché, supprimes la déclaration de CSPinEdit1
    12) Dans le fichier texte ainsi affiché, supprimes la déclaration de CSPinEdit2
    13) Fais un clique droit sur le fichier texte ainsi affiché ou sur son onglet et choisis "Voir comme fiche".
    14) Sur la fiche Vucertif, tu mets un Edit1, en face du Label dont le caption est "Page".
    15) Sur la fiche Vucertif, tu mets un Edit2, en face du Label dont le caption est "Zoom".
    16) Dans le fichier vucertificat.cpp, Remplaces toutes les occurences de CSPinEdit1->Text par Edit1->Text
    17) Dans le fichier vucertificat.cpp, Remplaces toutes les occurences de CSPinEdit2->Text par Edit2->Text
    18) Dans le fichier vucertificat.cpp, Remplaces toutes les occurences de CSPinEdit1->Enabled par Edit1->Enabled
    19) Dans le fichier vucertificat.cpp, Remplaces toutes les occurences de CSPinEdit2->Enabled par Edit2->Enabled

    20) Dans le fichier vucertificat.cpp, Remplaces toutes les occurences de CSPinEdit1->Value tel que:
    si c'est du type CSPinEdit1->Value = ...; alors mets: Edit1->Text=IntToStr(...);
    sinon remplaces CSPinEdit1->Value par StrToInt(Edit1->Text)
    21) Dans le fichier vucertificat.cpp, Remplaces toutes les occurences de CSPinEdit2->Value tel que:
    si c'est du type CSPinEdit2->Value = ...; alors mets: Edit2->Text=IntToStr(...);
    sinon remplaces CSPinEdit2->Value par StrToInt(Edit2->Text)

    Après cela, je penses que cela devrait fonctionner.

  20. #20
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Mattetfamilly a ecrit:
    En effet ce sont des paquets de composant exemple de Borland.
    CSPinEdit te permet de gérer un compteur dont tu limites les valeurs inférieures et supérieures.
    Si le paquet n'est pas installé, c'est normal que tu ne vois pas les composants
    J'ai regarde dans les fichiers borland mais je n'ai rien trouve a quel endroit ca se trouve

    sinon est ce que CSpinEdit1 est une sorte de Tedit

Discussions similaires

  1. creer apercu avant impression
    Par xargin dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/09/2011, 12h13
  2. [VBA-E] activer apercu avant impression
    Par mapmip dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/02/2007, 18h29
  3. Apercu avant impression
    Par arabi dans le forum 4D
    Réponses: 2
    Dernier message: 29/01/2007, 07h24
  4. Problème entre "apercu avant impression" et "impression"
    Par mariemor64 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 11h57
  5. [VB.NET] code pour afficher apercu avant impression
    Par DonJR dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/07/2006, 20h54

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