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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 2
    Points
    2
    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 habitué 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
    Points : 132
    Points
    132
    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 chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

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

    A plus !

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 2
    Points
    2
    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 chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Points : 2
    Points
    2
    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 habitué 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
    Points : 132
    Points
    132
    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 chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    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
    Futur Membre du Club
    Inscrit en
    Mars 2002
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 4
    Points : 5
    Points
    5
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Bon dev.
    Alex

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Points : 87
    Points
    87
    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 régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

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

  13. #13
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    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 régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

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

  15. #15
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    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 !

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 206
    Points : 87
    Points
    87
    Par défaut
    merci ca marche

  17. #17
    Membre habitué
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    Bonjour,

    J'aimerais vraiment qu'un projet se monte ici pour ce sujet qui traine depuis des années maintenant ... une classe d'impression avec une "belle présentation" ... pour les TStringgrid et pourquoi d'autres objets ... dommage que personne ne puisse y jeter un coup d'oeil ... j'ai beaucoup d'idées et d'exemples concrets mais peu de temps ... alors si quelques uns possèdent du temps ( denrées rares ) je pense que ca pourrait être un sujet intéressant !!

  18. #18
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Citation Envoyé par Freeze
    Bonjour,

    J'aimerais vraiment qu'un projet se monte ici pour ce sujet qui traine depuis des années maintenant ... une classe d'impression avec une "belle présentation" ... pour les TStringgrid et pourquoi d'autres objets ... dommage que personne ne puisse y jeter un coup d'oeil ... j'ai beaucoup d'idées et d'exemples concrets mais peu de temps ... alors si quelques uns possèdent du temps ( denrées rares ) je pense que ca pourrait être un sujet intéressant !!
    Hello...
    Moi je ne fais qu'utiliser la classe que tu m'avais fourni...qui marche nickel..mais il est vrai que j'ai pas eu le tps de la peaufiner.
    En revanche, je maintiens que tu devrais la proposer à developpez, dans les sources..ça ferait gagner du tps et ça permettrait que ceux qui ont du temps l'affine un peu.

    Voilou
    Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
    _ _ _ _ _ _ _ _ _

    La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
    _ _ _ _ _ _ _ _ _

    Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres

+ 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