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

Delphi Discussion :

Problème d'affichage de l'entête du ticket sur la deuxième page avec Quickreport sur Delphi 7


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 442
    Points : 35
    Points
    35
    Par défaut Problème d'affichage de l'entête du ticket sur la deuxième page avec Quickreport sur Delphi 7
    Salut tout le monde,

    Je rencontre un souci avec Quickreport sur Delphi 7 concernant l'impression du ticket. Ce ticket contient un grand nombre de produits et je souhaite ne plus afficher l'entête du ticket sur la deuxième page (voir en pièce jointe).Nom : Tcik2.jpg
Affichages : 137
Taille : 255,1 KoNom : tcik01.jpg
Affichages : 132
Taille : 116,1 Ko

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 717
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 717
    Points : 13 196
    Points
    13 196
    Par défaut
    Plutôt revoir la taille de la page, autant au niveau report qu'imprimante. La série Epson TM par exemple accepte jusqu'à 3m de ticket.

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 433
    Points : 5 842
    Points
    5 842
    Par défaut
    Salut

    mettre le printband a false selon les condition voulu

    c'est a dire que tu prend un boolean au premier passage il est a true
    au second il sera a false et une fois le pieds de page imprimé il redeviens a true

    Cordialement
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 442
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par anapurna Voir le message
    Salut

    mettre le printband a false selon les condition voulu

    c'est a dire que tu prend un boolean au premier passage il est a true
    au second il sera a false et une fois le pieds de page imprimé il redeviens a true

    Cordialement
    avez vous un bout de code ? ou un exemple svp

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 031
    Points
    41 031
    Billets dans le blog
    62
    Par défaut
    Quel est le type de la bande ? EN fait il aurait fallu que cette bande soit un QRGroup sur les lignes et pas un QRHeader (désolé si je ne me souviens plus exactement des noms, cela fait longtemps que je n'ai pas utilisé quickrep).
    P.S. d'ailleurs le QRHeaderColumn aussi devrait être dans le groupe

    D'ailleurs il y a un forum plus spécialisé https://www.developpez.net/forums/f1...s/quickreport/

    je dessinerai quelque chose comme ça
    ENTETE (bienvenue) Header premiere page
    DEBUT GROUPE (pour "entete" et intitulé colonnes)
    LIGNES
    TOTAUX (summary bas de page)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 433
    Points : 5 842
    Points
    5 842
    Par défaut
    Salut

    Voici un petit résumé de comment faire
    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
     
    Interface 
      TFacClient = class(TForm)
        FactClient : TDataset;
        ... // description des champs
        QRFactClient : TQuickRep;
        RbPageHeaderFact  : TQRBand;
        RbGroupFooterFact : TQRBand;
        ...
        procedure FormCreate(Sender: TObject);
        procedure RbPageHeaderFactBeforePrint(Sender: TQRCustomBand;var PrintBand: Boolean);
        procedure RbGroupFooterFactBeforePrint(Sender: TQRCustomBand;var PrintBand: Boolean);
      Private  
        BoolFirstPrint : Boolean;
      End;
    Implementation 
     
    procedure TFacClient.FormCreate(Sender: TObject);
    begin
      BoolFirstPrint := True;
    end;
     
    procedure TFacClient.RbPageHeaderFactBeforePrint(Sender: TQRCustomBand;var PrintBand: Boolean);
    begin
       // ici c'est l'entete de ta facture 
      PrintBand := BoolFirstPrint;
      BoolFirstPrint := False; 
    end;
     
     
    procedure TFacClient.RbGroupFooterFactBeforePrint(Sender: TQRCustomBand;var PrintBand: Boolean);
    begin
      BoolFirstPrint := True;
      // ici c'est le pied de page (les totaux)
    end;
     
    End.
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 442
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup pour votre aide jusqu'à présent !
    Cependant, j'ai remarqué une zone (en rouge) dans mon ticket (en attaché) utilisateur et j'aimerais m'en débarrasser.
    Auriez-vous des suggestions sur la façon de le faire ? Toute aide serait grandement appréciée !
    Images attachées Images attachées   

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 031
    Points
    41 031
    Billets dans le blog
    62
    Par défaut
    Il faudrait que l'on sache sont les types de bandes utilisées (structure de l'état), pour moi, il y a un problème de conception de l'état.
    Comme je vois encore deux entêtes, j'en déduis que ce n'est pas encore ça, il y a saut de page
    Il me semble que c'est à cause d'une taille de page, à ma souvenance, il est possible d'indiquer une impression en continu. De plus il y a peut-être un problème matériel (configuration de l'imprimante), en général une imprimante ticket est très spécifique.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 717
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 717
    Points : 13 196
    Points
    13 196
    Par défaut
    Tout ce que tu vas faire par code n'est qu'un emplâtre pour tenter de corriger de mauvais réglages de la taille papier.

    Là tu es en preview et on voit clairement que le format est A4. Le blanc est juste ce que tu as défini, on voit bien sur ta première image qu'il y a 80mm de vide en bas de page. Ca ne se voit pas à l'impression puisqu'en général les imprimantes de tickets ignorent le vide en fin de document (ne consomment pas du papier pour rien).

    Ce qu'on remarque aussi est que l'imprimante est à coupe manuelle (ça se voit à la denture). En bidouillant pour supprimer l'entête tu as l'impression d'une seule page (un seul ticket) mais si tu changes d'imprimante pour un modèle à coupe automatique tu auras bien deux tickets. Tu seras là bien obligé de revoir les réglages ; donc autant le faire tout de suite

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 442
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Il faudrait que l'on sache sont les types de bandes utilisées (structure de l'état), pour moi, il y a un problème de conception de l'état.
    Comme je vois encore deux entêtes, j'en déduis que ce n'est pas encore ça, il y a saut de page
    Il me semble que c'est à cause d'une taille de page, à ma souvenance, il est possible d'indiquer une impression en continu. De plus il y a peut-être un problème matériel (configuration de l'imprimante), en général une imprimante ticket est très spécifique.
    Merci pour votre réponse. Cependant, quelle est la taille idéale pour un ticket ? J'ai défini la taille à 80 mm/1000 mm (afin de supporter n'importe quel nombre de produits), mais le problème persiste : l'impression commence avec 900 mm de vide, puis imprime le contenu du ticket par la suite.

    Existe-t-il une solution à ce problème ?

    Merci d'avance pour votre aide.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 031
    Points
    41 031
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par LandGreen Voir le message
    Existe-t-il une solution à ce problème ?
    la solution est tout d'abord de répondre à mes interrogations :
    Type d'imprimante ?
    - windows détecte t'il le papier continu

    Types de bandes utilisées ?

    On peut toujours également calculer la taille de papier en fonction du nombre de lignes à imprimer.
    On peut utiliser l'ancêtre QReport pour passer hors des limites du composant "standard"
    On peut aussi se poser la question de l'utilisation de Rave plutôt que quickreport (histoire de vérifier que rave permette ce genre de chose)
    On peut aussi utiliser (ce que j'ai fait pour des imprimantes tickets) utiliser les commandes directes à l'imprimante (là je me rapproche de AndNotOr et ses coupures de ticket) voir ceci

    Bref, la solution commence par un établissement des faits pas une constatation du problème
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 442
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    la solution est tout d'abord de répondre à mes interrogations :
    Type d'imprimante ?
    - windows détecte t'il le papier continu

    Types de bandes utilisées ?
    type d'imprimante : imprimante thérmique Xprinter
    Windows détécte le papier oui l'impression de fait normal

    type de bandes : comment trouver ça ?

    par contre j'ai essayé d'imprimer une longe liste ça a marché comme le montre la figure, mais le bas de page la ou il y a les totaux ect... n'est pas affiché !

    des idées svp ?
    Images attachées Images attachées  

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 442
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    la solution est tout d'abord de répondre à mes interrogations
    voici une capture d'écran illustrant tout
    quel est le bon paramétrage dans mon cas ?
    Images attachées Images attachées  

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 442
    Points : 35
    Points
    35
    Par défaut
    additivement :

    lorsque j'ai exporté le ticket en PDF je vois que la partie en bas a été ignorée au lieu sachant que la taille est défini sur 79 / 1000

    voir figure
    Images attachées Images attachées  

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 031
    Points
    41 031
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    comme je l'ai déjà écrit je serais parti sur un
    QRGRoupHeader -- à la place de header, (groupe sur numéro ticket)
    QRDetailBand
    QRGroupFooter -- à la place de summary

    Reste le problème de la taille, toujours à mon avis et sans essai, il serait facile de calculer la hauteur en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QReport1.Height:=QRGroupHeader.Height+QRDetailBand.Height*nombre de lignes+QRGroupFooter.Height+Marge_Haut.height+marge_bas.height
    NB. Pas besoin de ce "boolfirstprint", on imprime un ticket à la fois (sauf si la demande est incomplète ?)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. affichage d'une image apres le chargement de la page
    Par Krubi dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/04/2006, 16h44
  2. Réponses: 26
    Dernier message: 25/01/2006, 16h03
  3. Réponses: 7
    Dernier message: 28/04/2004, 16h51
  4. PB : affichage de données avec accent sous delphi 6
    Par kinda dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2003, 13h19

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