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 un TStringGrid


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut Comment imprimer un TStringGrid
    Toute ma question tiens dans le titre?
    avec TPrinter je n'arive a imprimer que une colonne ou une ligne et sans retour a la ligne..
    Comment faire pour avaoir le tableau complet?
    Et est il possible d'inserer la grille ds un Rich edit??

    Merci!!
    alex

  2. #2
    Membre éprouvé Avatar de .:morgoth:.
    Profil pro
    Inscrit en
    Février 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 124
    Par défaut
    En effet ce que tu peux faire est de parcourir ton TStringGrid en insérant ligne par ligne dans un TRichEdit ou un TMemo (en séparant par des \t par exemple) et d'utiliser ensuite la methode Print() d'un de ces 2 composants.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Normalement, est-ce que ça ne devrait pas se faire de TStringGrid::Canvas
    vers TPrinter::Canvas ?

    A plus !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut
    Mais si j'insere ligne par ligne toute mes celule vont se trouver a las uite et faire une sorte de grande liste.. j'aurai perdu le tableau non??
    Et pourquoi uilisé des séparateur \n?? ca peut servir a quoi?
    Merci
    Alex

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Le caractère "\t" est une tabulation. C'est efficace si le nombre de caractères par chaîne
    permet une tabulation correcte.
    En réalité, il se peut qu'il faille calculer le nombre de tabs à insérer, pour que le résultat
    ait l'air d'un tableau.

    A plus !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut
    Alors j ai essayé avec Canvas mais ca marche pas..
    Quant a inserer les lignes dans un richedit ca ne donne rien de bon j obtiensune colone de tou ce qui étais en lignes..

    voila la lignes de code que j utilise

    RichEdit1->Lines->Add(StringGrid1->Rows[0]->Text);

    Si quelqu'un pouvais m expliquer pourquoi ca be fonctionne pas.. et comme je suis penible.. si aussi ces histoires de tab \t avecun chtit exemple.. je ne comprend vraiment pas..

    Merci!!
    Alex

  7. #7
    Membre éprouvé Avatar de .:morgoth:.
    Profil pro
    Inscrit en
    Février 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 124
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (int i=0;i<StringGrid1->RowCount;i++)
    {
      for (int j=0;j<StringGrid1->ColCount;j++)
        Memo1->Text+=StringGrid1->Cells[j][i]+"\t";
      Memo1->Text+="\r\n";
    }
    Voila ce sera pas top niveau affichage mais bon ca devrait imprimer tout ton tableau...

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Je pense qu'il faudrait faire autrement, si tu veux avoir une représentation
    d'un tableau, digne de ce nom.

    - Dans un premier temps récupérer dans un tableau, la largeur maximale des chaînes
    et ce, par colonnes, à l'aide de Canvas->TextWidth(...) à la quelle on ajoute de quoi
    séparer les colonnes.

    La hauteur du texte sera donnée, pour l'ensemble, à l'aide de Canvas->TextHeight(...)
    à laquelle on ajoute également de quoi bien séparer les lignes.

    - Transmettre au Canvas de l'imprimante les chaînes à l'aide de TextOut, la position
    des chaînes étant calculée en fonction de la ligne (y) et de sa position (x) que l'on
    déduit des largeurs des colonnes qui précèdent.
    Ici on progresse par ligne : colonne par colonne.

    Partant de là, tu pourrais en déduire si plusieurs feuilles sont nécessaires pour
    traiter ce qui déborde à droite et ce qui déborde en bas ! Sauf si l'imprimante est
    suffisamment intelligente pour le faire d'elle même !

    Comme je n'ai pas d'imprimante je ne peux que tester sur un bitmap !
    Il me semble qu'il faut encadrer les commandes par BeginDoc et EndDoc... ?

    A plus !

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 4
    Par défaut
    Je crois que j'ai plus simple:

    Dans ton QuickReport, tu place une bande détail dans laquelle tu mets un TQRImage.

    Ensuite tu recopie le canvas de ton TStringGrid dans le Canvas de ton TQRImage et le tour est joué, j'ai testé ca marche nickel !

    Jigé

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut
    Grand merci ca marche nickel!!!

    Bon dev.
    Alex

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Bonjour,

    serait il possible d'avoir le code de Jigé ou lex4281 svp

    car j'ai pas suivi le Quickreport :/

    Merci

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Bon personne ne s'en souviens alors :/

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Est-ce que tu as essayé au plus simple avec TWinControl::PaintTo.
    Voir l'exemple dans l'aide.

    A plus !

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Par défaut
    Stringgrid ne peut pas faire appel à la fonction PaintTo :/

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    TStringGrid dérive de TWinControl donc hérite de PaintTo.
    Voir dans l'aide !

    Tu as essayé de faire (au plus simple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <Printers.hpp> // dans le .h de l'unité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Printer()->BeginDoc();
    StringGrid1->PaintTo(Printer()->Handle, 10, 10);
    Printer()->EndDoc();
    Je ne peux pas tester donc... !

    A plus !

+ 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 TStringGrid ?
    Par braecking dans le forum Débuter
    Réponses: 9
    Dernier message: 17/02/2008, 23h11
  3. [Delphi 6] Comment imprimer le contenu d'un TStringGrid ?
    Par bobstar dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/09/2005, 18h43
  4. Comment imprimer des tabulations ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 11h30
  5. Comment imprimer le contenu d'un TStringGrid
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/06/2002, 15h41

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