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 :

Comment imprimer une StringGrid? [FAQ]


Sujet :

C++Builder

Vue hybride

emmental Comment imprimer une... 22/05/2006, 13h29
Mattetfamilly Personnellement, j'ai déjà... 22/05/2006, 19h13
pottiez Moi personnelement j'ai codé... 22/05/2006, 19h19
emmental le problème est que je ne... 22/05/2006, 19h59
pottiez Avec l'objet TPrinter tu peut... 22/05/2006, 20h07
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 31
    Par défaut Comment imprimer une StringGrid?
    Bonjour à tous

    Je travaille sur BDS2006 en C++.

    Après maintes recherches sur le Forum, je repose cette question qui n'a jamais eu de réponses claires affichées sur ce forum...

    Comment peut- on imprimer une StringGrid, sans utiliser Exel (je ne suis pas supposée avoir la licence)...et en gardant les lignes de séparation de colonnes et de lignes
    (donc ne pas transférer le contenu de la grille dans un Memo, par exemple)?
    Cette question a déja été abordée et apparemment des réponses se sont données en messages privés.

    J'ai essayé de joindre les personnes qui ont envoyé ou reçu ces solutions, mais elles ne m'ont pas répondu.

    Merci d'avance pour vos suggestions?

  2. #2
    Membre expérimenté Avatar de Mattetfamilly
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 182
    Par défaut
    Personnellement, j'ai déjà été confronté profesionellement à ce problème.

    Je suis en congés et je n'ai pas le code sous la main. (je rentres le 19/06/2006 au boulot)
    Pour le contourner, j'ai utilisé un QuickReport.
    Ensuite à la compilation, j'ai une boucle pour scruté chaque cellule et je crée dynamiquement un TQRLabel pour chacune.
    Ensuite il doit y avoir une propriété Frame qui te permet de mettre un cadre à chaque Label.
    Cela a nécessité quelques essais et ce ne fut pas facile. Parmi les difficultés que j'avais éprouvé:
    Les Width / Left / Top et Height ne sont pas les mêmes entre la TSringGrid et le QuickReport. Cela vient du fait que les coordonnées sont exprimées en coordonnées écran pour la TStringGrid et en coordonnées imprimante pour le quickreport.
    Tu dois trouver ou redeéterminer par des essais le coefficient de conversion entre les deux.

    Le petit plus, cette méthode te donne un accès plus aisée à la mise en page (centrage du tableau par exemple) ainsi que l'utilisation de composants de titre, entête de page, nombre de pages, bas de page...
    Cela est aussi assez simple de rapeller une ou plusieurs colonnes ou encore lignes à chaque page (ligne de titre / colonnes de nom...)

    Si tu cherches toujours le mois prochain, en reprenant le boulot, je t'enverrai le code.

    Mattetfamilly.

  3. #3
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Moi personnelement j'ai codé l'impression tout seul avec l'objet TPrinter.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 31
    Par défaut
    Citation Envoyé par pottiez
    Moi personnelement j'ai codé l'impression tout seul avec l'objet TPrinter.
    le problème est que je ne peux pas juste imprimer la Form qui contient la StringGrid, car cette grille est supposée contenir beaucoup de lignes...
    (qui ne tiennent pas sur une seule Form).
    j'aimerais avoir plusieurs pages d'impression qui donnent le contenu de ma StringGrid, quelqu'il soit.

  5. #5
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Citation Envoyé par emmental
    le problème est que je ne peux pas juste imprimer la Form qui contient la StringGrid, car cette grille est supposée contenir beaucoup de lignes...
    (qui ne tiennent pas sur une seule Form).
    j'aimerais avoir plusieurs pages d'impression qui donnent le contenu de ma StringGrid, quelqu'il soit.
    Avec l'objet TPrinter tu peut imprimer ce que tu veut, de la taille que tu veut, sur le nombre de page que tu veut, il faut juste savoir le faire, ce qui n'est pas une mince affaire.

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 31
    Par défaut
    merci Pottiez,
    j'ai trouvé cet exemple dans l'aide sur Tprinter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       TPrinter *Prntr = Printer();
       TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
       Prntr->BeginDoc();
       for( int i = 0; i < Memo1->Lines->Count; i++)
          Prntr->Canvas->TextOut(
             200,200 + (i *  Prntr->Canvas->TextHeight(Memo1->Lines->Strings[i])),
              Memo1->Lines->Strings[i]);
       Prntr->Canvas->Brush->Color = clBlack;
       Prntr->Canvas->FrameRect(r);
       Prntr->EndDoc();
    }
    cela fonctionne très bien avec un TMemo, mais je n'arrive pas à modifier la ligne en rouge, pour l'adapter à un StringGrid.
    vois-tu comment faire?

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

Discussions similaires

  1. [VB.NET]Comment Imprimer une form
    Par bernard06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2011, 17h43
  2. Comment Imprimer une zone de texte
    Par Chichou87 dans le forum IHM
    Réponses: 1
    Dernier message: 02/02/2007, 23h06
  3. Comment imprimer une JTable
    Par L4BiN dans le forum Composants
    Réponses: 9
    Dernier message: 03/08/2006, 15h09
  4. Comment imprimer une BDD comme le fait Access
    Par Hamza dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/05/2006, 13h15
  5. Comment imprimer une zone de liste?
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/01/2006, 13h24

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