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 :

Imprimer du texte formaté inclus en BeginDoc


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut Imprimer du texte formaté inclus en BeginDoc
    Bonjour

    Encore un problème tout bête d'impression que je tente en vain dans tous les sens de résoudre.

    Imaginez que vous souhaiteriez imprimer une ligne en pied de page à un endroit précis via une procédure à l'aide de cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
       BeginDoc;
    ...
           Canvas.TextOut(...
    ...
       EndDoc;
    ...
    Jusque là tout va bien, mais je souhaite en haut de cette page, ajouter un texte formaté, si je place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichEdit1.Print(RichEdit1.Text);
    après le BeginDoc, le compilateur grogne et le pilote de la printeuse aussi !

    Si je place ce code au dessus du BeginDoc, là l'impression se déroule normalement avec formatage texte mais... sur deux pages, car c'est deux méthodes d'impressions différentes et donc cela se passera en deux étapes via un saut de page non souhaité en ce cas.

    Or mon problème est de savoir comment obtenir cette impression sur une seule page.

    Pas moyen de trouver un code compatible qui ajoute du texte avec la méthode Canvas.

    Si seulement je trouvais une astuce pour stopper le saut de page après :
    (Mais il me semble que cela soit impossible...)
    RichEdit1.Print(RichEdit1.Text);


    Mais peut-être je me trompe encore de chemin, merci d'avance de vos idées.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    J'ai déjà été enquiquiné avec ce pb.
    Dans un premier temps je me suis dit qu'en remontant au code-Delphi de la méthode Print des RichEdit je pourrais créer une méthode PrintBis où j'enlèverais le BeginDoc et le EndDoc de façon à pouvoir appeler cette PrintBis entre le BeginDoc et le EndDoc où je fais mon Canvas.StretchDraw() ou toi le TextOut() puis j'ai laissé tomber ... car dans mon cas il s'agissait uniquement d'associer un simple commentaire avec des indices et des exposants à des graphes de fonctions et j'ai donc fait entièrement la mise en page avec le canvas du Printer.

    Si tu te sens d'attaque pour coder une PrintBis ... bon courage.
    Par contre il reste une parade (j'aime bien les parades) tu fais un essai pour repérer sur quelle ligne du RichEdit s'effectue le saut-de-page-automatique de la méthode standard Print et tu calibres ton texte en conséquence de sorte que la ligne de texte de pied-de-page se retrouve toujours en dernière ligne ... et si le texte est plus court qu'une page il suffit d'intercaler des lignes vides pour repousser le pied-de-page au bas de la page.

    Mais tout ceci n'est que des pistes ... peut-être qu'il y a mieux.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    Gilbert écrivait :
    J'ai déjà été enquiquiné avec ce pb.
    Ça me rassure un peu de ne pas avoir été le seul devant ce blème

    Dans un premier temps je me suis dit qu'en remontant au code-Delphi de la méthode Print des RichEdit je pourrais créer une méthode PrintBis où j'enlèverais le BeginDoc et le EndDoc de façon à pouvoir appeler cette PrintBis entre le BeginDoc et le EndDoc où je fais mon Canvas.StretchDraw() ou toi le TextOut() puis j'ai laissé tomber ... car dans mon cas il s'agissait uniquement d'associer un simple commentaire avec des indices et des exposants à des graphes de fonctions et j'ai donc fait entièrement la mise en page avec le canvas du Printer.

    Si tu te sens d'attaque pour coder une PrintBis ... bon courage.
    Oupsssss

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Par contre il reste une parade (j'aime bien les parades) tu fais un essai pour repérer sur quelle ligne du RichEdit s'effectue le saut-de-page-automatique de la méthode standard Print et tu calibres ton texte en conséquence de sorte que la ligne de texte de pied-de-page se retrouve toujours en dernière ligne ... et si le texte est plus court qu'une page il suffit d'intercaler des lignes vides pour repousser le pied-de-page au bas de la page.
    Oui mais le texte d'en-tête est sous variable, qui d'ailleurs peut être vide, alors pour connaître la dernière ligne avant le saut de ligne, j'ai paumé ma boule de cristal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mais tout ceci n'est que des pistes ... peut-être qu'il y a mieux.
    Merci tout de même de ces idées, si elles peuvent germer, bientôt l'été

    A défaut, je vais me résoudre à remonter toujours sous BeginDoc, disont une ou deux dizaines de lignes indépendantes qui simuleront un texte, mais c'est bourrin

    @+
    Jean-Pierre

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    Oui mais le texte d'en-tête est sous variable, qui d'ailleurs peut être vide, alors pour connaître la dernière ligne avant le saut de ligne, j'ai paumé ma boule de cristal
    Si je prends un RichEdit de texte plein de lignes sur une page et demie, que j'imprime avec RichEdit.Print, puis que je prends le papelard et que je compte le nombre de lignes imprimées sur le papier en première page j'ai bien une indication de la taille-max de texte qui tient sur une page. Donc je peux en visant juste positionner un pied-de-page en fin de première page , etc et si sur n'importe quelle page le texte d'en-tête sous variable est vide on peut bien y rajouter des Add('') en nombre suffisant pour positionner le pied-de-page en fin de page. Non?

    Si tu te sens d'attaque pour coder une PrintBis ... .
    Oupsssss
    En fait j'avais fouillé mais pas trouvé le code de la méthode Print, j'aurais pas dû dire "coder une PrintBis" mais récupérer une copie de Print et la modifier pour en faire une PrintBis juste sans le beginDoc ni le EndDoc et sans toucher au reste.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Re Gilbert,

    Si je te suis bien, oui mais alors tu utiliserais exclusivement le RichEdit ?

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 266
    Points
    3 266
    Par défaut
    J'étais en-train d'ajouter une 2ème partie à mon message précédent pendant que t'as rédigé le tien.

    Si je te suis bien, oui mais alors tu utiliserais exclusivement le RichEdit ?
    Effectivement puisque c'est lui dont le Print génère les sauts de page automatiques sans nous demander notre avis.

    Par contre si on trouve le code de la méthode Print des RichEdit dans les entrailles de Delphi, et qu'on en fait une copie dans laquelle on enlève les BeginDoc et EndDoc et qu'on nomme cette copie PrintBis on devrait pouvoir faire intervenir la PrintBis entre le BeginDoc et le EndDoc d'une untité de l'appli en cours de mise au point appeler ... par contre ceci nécessiterait de guetter le moment où ce printBis arrive en fin de page pour y intercaler le pied-de- page avant de passer à la page suivante.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

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

Discussions similaires

  1. [AC-2010] Imprimer en texte dans un format spécifique
    Par toumack dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/11/2011, 09h03
  2. Inclusion de texte formaté
    Par black is beautiful dans le forum Flex
    Réponses: 2
    Dernier message: 27/01/2010, 09h21
  3. Enregistrer un texte formaté RTF d'un RichEdit dans un Blob
    Par dem dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/01/2005, 10h05
  4. VB6] imprimer le texte afficher dans une picturebox
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/08/2004, 11h15
  5. Imprimer fichier texte
    Par Freeze dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/11/2003, 11h37

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