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

Lazarus Pascal Discussion :

Imprimer le texte d'un TMemo


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Imprimer le texte d'un TMemo
    Bonjour à tous.

    J'ai un texte (UTF8) dans un memo1 et je veux l'imprimer.

    Quelle est la bonne méthode pour faire ça ?

    Merci par avance !

  2. #2
    Rédacteur/Modérateur

    Bonjour !

    Personnellement je n'ai jamais fait cela, mais je vois qu'il y a un article ici (en anglais) :
    Using the printer

    Le début de l'article est encourageant : Printing is easy in Lazarus.

    Bonne chance !

  3. #3
    Membre expert
    Bonjour

    Tu peux te référer à cette discussion sur le forum anglais.

    A+

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  4. #4
    Expert confirmé
    hello,
    pour illustrer les deux réponses précédentes, j'ai mis en pièce jointe un petit projet qui teste les deux types d'impression :

    1 - Impression simple utilisant la classe Printer du paquet Printer4Lazarus.



    2 - Impression avec aperçu ,mise en page, choix de l'imprimante en utilisant le composant TfrReport du paquet lazReport



    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Candidat au Club
    Citation Envoyé par BeanzMaster Voir le message
    Bonjour

    Tu peux te référer à cette discussion sur le forum anglais.

    A+

    Jérôme
    merci à votre reponse, mais dans le resultatt d'impression il retourne pas à la ligne, lorsque existe une ligne longue dans le texte à imprimer (wordwrap)

    j'ai attaché le project exemple + resultat d'impression (pdf)

  6. #6
    Candidat au Club
    Citation Envoyé par jurassic pork Voir le message
    hello,
    pour illustrer les deux réponses précédentes, j'ai mis en pièce jointe un petit projet qui teste les deux types d'impression :

    1 - Impression simple utilisant la classe Printer du paquet Printer4Lazarus.



    2 - Impression avec aperçu ,mise en page, choix de l'imprimante en utilisant le composant TfrReport du paquet lazReport



    Ami calmant, J.P
    1. En ce que concerne l'impression en utilisant le composant TfrReport du paquet lazReport :
    il ya un bug si vous imprimez un texte contenant le symbol "[" par exemple essayer d'imprimer ce texte : [B]simple text contient [ symbole[/B]
    et voir une exception qui affiche comme ceci :

    Project printmemo raised exception class 'EParserError' with message:
    Object : Memo1
    Band : MasterData1
    Page : Page1
    Undefined symbol : SYMBO

    In file 'lr_class.pas' at line 10317



    2. et pour l'impression en utilisant la classe Printer du paquet Printer4Lazarus :
    le problem c'est que il retourne pas à la ligne(wordwrap) lorsque existe une ligne trés longue dans le texte à imprimer.

  7. #7
    Expert confirmé
    hello,
    Citation Envoyé par brahim213 Voir le message
    1. En ce que concerne l'impression en utilisant le composant TfrReport du paquet lazReport :
    il ya un bug si vous imprimez un texte contenant le symbol "[" par exemple essayer d'imprimer ce texte : [B]simple text contient [ symbole[/B]
    et voir une exception qui affiche comme ceci :

    Project printmemo raised exception class 'EParserError' with message:
    Object : Memo1
    Band : MasterData1
    Page : Page1
    Undefined symbol : SYMBO
    pour ce problème voir ici
    literal

    et pour :
    2. et pour l'impression en utilisant la classe Printer du paquet Printer4Lazarus :
    le problem c'est que il retourne pas à la ligne(wordwrap) lorsque existe une ligne trés longue dans le texte à imprimer.
    WordWrap à True dans le TMemo ?

    sinon il y a la méthode à l'arrache :
    on lance un notepad par un TProcess :
    on copie le contenu du Tmemo dedans par le presse papier par programmation
    et on balance un CTRL+P à NotePad par programmation



    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  8. #8
    Candidat au Club
    Citation Envoyé par jurassic pork Voir le message


    et pour :


    WordWrap à True dans le TMemo ?

    Ami calmant, J.P
    il est déja WordWrap à true il reste le meme problem c-a-d ne retourne pas à la ligne.

  9. #9
    Expert confirmé
    c'est que ton Tmemo est trop large , il contient trop de caractères par lignes
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Candidat au Club
    Citation Envoyé par jurassic pork Voir le message
    c'est que ton Tmemo est trop large , il contient trop de caractères par lignes
    le même memo1 il wrap le texte sur l'exemple : frReport

  11. #11
    Expert confirmé
    hello,
    bon je crois que j'ai trouvé une solution pour lazreport :
    Il faut passer par une variable string :


    1 - Editer le rapport (ex : print.lrf)
    2 - Créer une nouvelle catégorie avec une nouvelle variable :
    Choisir dans le menu File/Variables List
    Dans la fenêtre Variables Editor cliquer sur le bouton Variables
    Rentrer un nom de catégorie (exemple TMemo)
    et ajouter en dessous le nom de la variable en ajoutant un espace avant le nom de la variable (ex : memo1)
    Cliquer sur OK
    Mettre la variable dans le rapport :





    et ajouter la procédure suivante sur l'événement GetValue du composant frReport
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant );
    begin
       if ParName='memo1' then
       ParValue:= Memo1.Text;
    end;


    résultat :


    projet en pièce jointe.


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #12
    Candidat au Club
    Je vient de le tester et ça marche trés bien cette fois c-à-d avec le symbole [#22320]
    avec cette procedure et méthode on peut ignorer les caractères spéciaux reservés à frReport1
    Merci

###raw>template_hook.ano_emploi###