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 !
Version imprimable
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 !
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 !
Bonjour
Tu peux te référer à cette discussion sur le forum anglais.
A+
Jérôme
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.
Pièce jointe 582484
2 - Impression avec aperçu ,mise en page, choix de l'imprimante en utilisant le composant TfrReport du paquet lazReport
Pièce jointe 582485
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 : simple text contient [ symbole
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.
hello,
pour ce problème voir ici
literal :mrgreen:
et pour :
WordWrap à True dans le TMemo ? :mrgreen:Citation:
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.
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
:aie:
Ami calmant, J.P
c'est que ton Tmemo est trop large , il contient trop de caractères par lignes
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 :
Pièce jointe 582669
et ajouter la procédure suivante sur l'événement GetValue du composant frReport
résultat :Code:
1
2
3
4
5 procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant ); begin if ParName='memo1' then ParValue:= Memo1.Text; end;
Pièce jointe 582670
projet en pièce jointe.
Ami calmant, J.P
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 8-)