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 :

Quick Report et impression de donn�es hors BDD


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre chevronn�

    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Par d�faut Quick Report et impression de donn�es hors BDD
    Bonjour,

    J'ai besoin d'imprimer des donn�es sous une forme pseudo tabulaire : j'ai par exemple une liste d'objets (ou structures, peut importe) qui contiennent plusieurs AnsiString ; ce que je veux c'est que �a s'imprime comme sur l'image ci-dessous :


    J'ai bien r�ussi en bidouillant � faire ce que je veux (les champs pouvant prendre plusieurs lignes sont dans des TRichEdit li�s au composant �quivalent de QR pour pouvoir compter les lignes et je rajoute des sauts de ligne pour que chaque colonne ait autant de ligne apr�s avoir ins�r� le contenu d'un objet) mais d�s que �a d�passe une page, j'ai la premi�re colonne qui commence sur la page 1, la deuxi�me sur la page 2 (ou 3 ...), etc ... sauf pour la premi�re ligne !


    Ce que j'aimerai faire c'est d�finir le contenu d'une bande (champ titre, champ description, champ niveau ...), puis rajouter une bande par instance d'objet � imprimer pour faire un code du style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    Etat->Detail->NewBand();
    Etat->Detail->ActiveBand->Champ1 = iterateur->champ1;
    Etat->Detail->ActiveBand->Champ2 = iterateur->champ2;
    Etat->Detail->ActiveBand->Champ3 = iterateur->champ3;
    Merci beaucoup pour votre aide

    P.S. : essayez d'�tre le plus pr�cis possible car Quick Report et moi �'est loin de ne faire qu'un

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Par d�faut PEUT ETRE
    Peut etre faut il simplement changer les propri�t�s d'orientation de la page ou/et la taille des caract�res

    @+

  3. #3
    Membre chevronn�

    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Par d�faut
    Non, le probl�me de d�calage n'apparait que si cela doit faire plusieurs pages, cela n'a donc aucun rapport avec l'orientation de la page ou la taille de caract�res !
    En fait j'utilise un QRRichEdit (ou un nom dans le genre) pour chaque colonne et si ma ligne n'est pas assez longue, il y a le retour � la ligne automatique (d'ou l'utilisation d'un TRichEdit de m�me taille que le composant imprimable pour pouvoir compter le nombre de lignes que �a m'a pris). Ensuite je ajoute une ligne vide dans chaque colonne jusqu'� ce que toutes les colonnes soient au m�me niveau. Le seul probl�me est que au moment ou le RichEdit est d�coup� sur deux pages (ou plus) il y a tout un d�calage qui apparait pour les colonnes de droite !

    J'y comprend rien !

  4. #4
    GaL
    GaL est d�connect�
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    24
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 24
    Par d�faut
    A mon avis pour resoudre ton probleme tu devrait mettre chaque ligne dans une bande enfant en mettant comme parent la bande qui se trouve juste au dessus.
    Tu devrait donc avoir autant de bande que de sorts et armes.

    Ensuite pas la peine de te casser la tete avec tes sauts de ligne et tes lignes vide met simplement la propriete AutoStretch et ton QRRichEdit a true, normallement tout devrait se redimmensionner comme tu le veux

  5. #5
    Membre chevronn�

    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Par d�faut
    Encore quelques questions :

    Si je fais une bande enfant pour chaque ligne, je dois recr�er dynamiquement mes contr�les qui sont dedans (ce qui implique toute une structure de donn�es pour tout se rapeller) ?

    Si je fais un code du genre �a peut le faire ?:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    MaBande->hasChild = true;
    *(MaBande->Child) = MaBandeModele;
    Et quand je voudrais effacer mon �tat, il faudra que je fasse un delette sur chaque composant et chaque bande enfant ou juste sur chaque bande enfant (qui se chargera des compos qui lui sont encr�s) ou il suffit de mettre la propri�t� HasChild de chaque bande � false ?

    Je sais je fais le gros fain�ant mais j'en ai marre de cet Etat

    Merci beaucoup � vous tous

  6. #6
    Membre chevronn�

    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Par d�faut
    bon ben j'ai trouv� un peu de temps pour me pencher sur la question et voila ce que j'ai pondu :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    void TMDIChild::SetEtatSorts()
    {
        int i;
        TQRCustomBand * Bande1;
        TQRChildBand * Bande2 = NULL;
        TControl * Control;
     
        // destruction des bandes enfant (effaçage)
        Bande1 = EtatSorts->DetailSorts;
        while (Bande1->ChildBand) // on descend jusqu'au dernier fils
            Bande1 = Bande1->ChildBand;
        while (static_cast<void *>(Bande1) != static_cast<void *>(EtatSorts->DetailSorts))
        {   // on remonte en supprimant les bandes
            Bande2 = dynamic_cast<TQRChildBand * >(Bande1);
            Bande1 = Bande2->ParentBand;
            delete Bande2;
        }
     
        Bande1 = EtatSorts->DetailSorts;
        //Remplissage de l'état
        for(i = 0; i < ListeSorts->Items->Count ; i++)
        {
            //Création de la bande et des QRRichText
            Bande1->HasChild = true;
            Bande1 = Bande1->ChildBand;
            if(!Bande1)
            {
                Application->MessageBox("lsdqkmfmlqksdjh",NULL,MB_OK);
                Close();
            }
            Bande1->ParentWindow = EtatSorts->DetailSorts->ParentWindow;
            Bande1->Height = 20;
     
            Control = new TQRRichText(Bande1);
            Control->Height = EtatSorts->SortNom->Height;
            Control->Width = EtatSorts->SortNom->Width;
            Control->Top = 0;
            Control->Left = EtatSorts->SortNom->Left;
            static_cast<TQRRichText *>(Control)->Lines->Add(ListeSorts->Items->Item[i]->Caption);
     
            Control = new TQRRichText(Bande1);
            Control->Height = EtatSorts->SortNiv->Height;
            Control->Width = EtatSorts->SortNiv->Width;
            Control->Top = 0;
            Control->Left = EtatSorts->SortNiv->Left;
            static_cast<TQRRichText *>(Control)->Lines->Add(ListeSorts->Items->Item[i]->SubItems->Strings[1]);
     
            Control = new TQRRichText(Bande1);
            Control->Height = EtatSorts->SortDesc->Height;
            Control->Width = EtatSorts->SortDesc->Width;
            Control->Top = 0;
            Control->Left = EtatSorts->SortDesc->Left;
            static_cast<TQRRichText *>(Control)->Lines->Add(ListeSorts->Items->Item[i]->SubItems->Strings[3]);
        }
    }
    le probl�me est que pour afficher l'aper�u, j'ai une fonction qui fait appel � SetEtatSorts puis a EtatSorts->PreviewModal() et � ce moment l�, j'ai un beau message d'erreur : <<Le contr�le '' n'a pas de fen�tre parente>>

    vous en pensez koi :

  7. #7
    Membre chevronn�

    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Par d�faut
    Mille excuse, j'ai fait un peu du n'importe quoi
    Bon ben j'ai trouv� la solution a mon probl�me : c'est pas ma bande enfant qu'avait pas de parent mais mes QRRichText !!!
    Voici la solution revue et corrig�e, il ne me reste plus qu'a comprendre pourquoi quand mon QRRichText ne fait qu'une ligne je n'ai pas de probl�me et quand il en fait plusieurs, j'ai un espace d'1 cm entre la fin d'un texte et le d�but du texte de la bande enfant !!!
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    void TMDIChild::SetEtatSorts()
    {
        int i;
        TQRCustomBand * Bande1;
        TQRChildBand * Bande2 = NULL;
        TControl * Control;
     
        // destruction des bandes enfant (effaçage)
        Bande1 = EtatSorts->DetailSorts;
        while (Bande1->ChildBand) // on descend jusqu'au dernier fils
            Bande1 = Bande1->ChildBand;
        while (static_cast<void *>(Bande1) != static_cast<void *>(EtatSorts->DetailSorts))
        {   // on remonte en supprimant les bandes
            Bande2 = dynamic_cast<TQRChildBand * >(Bande1);
            Bande1 = Bande2->ParentBand;
            delete Bande2;
        }
     
        Bande1 = EtatSorts->DetailSorts;
        //Remplissage de l'état
        for(i = 0; i < ListeSorts->Items->Count ; i++)
        {
            //Création de la bande et des QRRichText
            Bande1->HasChild = true;
            Bande1 = Bande1->ChildBand;
            Bande1->Height = 20;
     
            Control = new TQRRichText(Bande1);
            Control->Parent = Bande1;
            Control->Height = EtatSorts->SortNom->Height;
            Control->Width = EtatSorts->SortNom->Width;
            Control->Top = EtatSorts->SortNom->Top;
            Control->Left = EtatSorts->SortNom->Left;
            static_cast<TQRRichText *>(Control)->AutoStretch = true;
            static_cast<TQRRichText *>(Control)->Lines->Add(ListeSorts->Items->Item[i]->Caption);
     
            Control = new TQRRichText(Bande1);
            Control->Parent = Bande1;
            Control->Height = EtatSorts->SortNiv->Height;
            Control->Width = EtatSorts->SortNiv->Width;
            Control->Top = EtatSorts->SortNiv->Top;
            Control->Left = EtatSorts->SortNiv->Left;
            static_cast<TQRRichText *>(Control)->AutoStretch = true;
            static_cast<TQRRichText *>(Control)->Lines->Add(ListeSorts->Items->Item[i]->SubItems->Strings[1]);
     
            Control = new TQRRichText(Bande1);
            Control->Parent = Bande1;
            Control->Height = EtatSorts->SortDesc->Height;
            Control->Width = EtatSorts->SortDesc->Width;
            Control->Top = EtatSorts->SortDesc->Top;
            Control->Left = EtatSorts->SortDesc->Left;
            static_cast<TQRRichText *>(Control)->AutoStretch = true;
            static_cast<TQRRichText *>(Control)->Lines->Add(ListeSorts->Items->Item[i]->SubItems->Strings[3]);
        }
    }

  8. #8
    Membre chevronn�

    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Par d�faut
    h� bien il semblerai que cet espace en trop fut d� � la taille que je donnais � ma bande :
    est la taille de l'espace rajout� si un controle est �tir� (QRRichText->AutoStretch)
    solution :

  9. #9
    GaL
    GaL est d�connect�
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    24
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 24
    Par d�faut
    oui effectivement g eu a peu pr�s les meme probl�mes que moi.
    D�sol� de ne pas t'avoir aid� mais j'�tais parti en WE...

    En tout cas si tu as d'autres soucis n'hesitent pas...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 04/09/2013, 11h27
  2. Impression Par Quick Report
    Par BYALI dans le forum Bases de donn�es
    R�ponses: 4
    Dernier message: 19/01/2008, 16h51
  3. [Quick Report] - S�lection d'un bac d'impression.
    Par Argonz dans le forum Outils
    R�ponses: 3
    Dernier message: 07/07/2007, 07h20
  4. [QUICK REPORT] Imprimer des donn�es dans QRIMAGE
    Par freud dans le forum Bases de donn�es
    R�ponses: 1
    Dernier message: 23/01/2007, 12h07
  5. [D7] D�passement de pile � l'impression avec Quick Report
    Par Bigbaloo dans le forum Composants VCL
    R�ponses: 8
    Dernier message: 16/03/2005, 00h28

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