Page 1 sur 1

Imprimer une variable qui récupère un editorgadget (RESOLU)

Publié : sam. 23/août/2008 12:00
par coxco
Salut

Voila je voudrais imprimer une variable qui récupère un editorgadget.
Le problème c'est que l'impression des retours chariot, se fait sous forme de caractère au lieu de sauter une ligne.

j'ai essayé avec

Code : Tout sélectionner

FindString(variable,Chr(13),0) 
StringField(variable,1,Chr(13))

Pensez vous que c'est une bonne solution ?
Ou quoi d'autre ?

Merci
:roll:

Publié : sam. 23/août/2008 12:24
par kernadec
bonjour
tu le met chr(13) dans ta variable
utilise left(variable,len(variable)-1)) pour ne pas l'imprimer
deja pour commencer.
je ne pense pas que l'ont doit mettre de chr(13)
avec les commandes d impression startprinting etc..
mais il faut gerer avec la resolution de l'imprimante et la police de caractere utilisée, les sauts de lignes dans une boucle,
pour etre compatible avec toute les imprimantes.

Publié : sam. 23/août/2008 12:50
par coxco
Je comprend ce que tu veux dire.
Mais je ne peux pas supprimer tous les retours ligne, si l'on saisit un retour ligne dans un editorgadget je voudrais le conserver et pouvoir le transcrire en saut de ligne à l'impression.

Publié : sam. 23/août/2008 12:57
par kernadec
tu les retire au cours de la copie dans une variable buffer pour imprimer
voila un exemple d'impression avec plusieurs lignes la commande impression est simple
a cette adresse j'ai poster ca:
http://www.purebasic.fr/french/viewtopic.php?t=8459
utilise acrobat distiller pour tester l'impression en fichier pdf
c'est moins cher que le papier

voila la routine d'impression
tu l'adapte a tes gadjets et hop!

Code : Tout sélectionner

Procedure xcm(x.f)
  x = x * (PrinterPageWidth()/21) ; 21cm A4
  ProcedureReturn x
EndProcedure
Procedure ycm(x.f)
  x = x * (PrinterPageHeight()/29.7) ; 29,7cm A4
  ProcedureReturn x
EndProcedure  



 yhaut = 300
xleft = 300
p=0
If PrintRequester() 
  If StartPrinting("Multipages av n°") 
    Font=ycm(((8*0.090)/2.5))
    LoadFont(1,"Arial",Font)
    If StartDrawing(PrinterOutput()) 
        DrawingFont(FontID(1)) 
        For n=0 To CountGadgetItems(1)  ; le nombre de ligne ici 
          yhaut=yhaut+(Font*1.5)
          DrawText(xleft,yhaut,GetGadgetItemText(1,n-1,0)) ; et ton texte gadget ici !
          If yhaut>ycm(780*0.035)    
            p=p+1                 ; 29.7cm/848pixels=0.035 - 21.0cm/600pixels=0.035              
            DrawText(xcm(500*0.035),ycm(800*0.035),Str(p))  ;numero de bas page droite 
            NewPrinterPage()
            yhaut=300
          EndIf  
        Next n
        p=p+1 
        DrawText(xcm(500*0.035),ycm(800*0.035),Str(p))  ;numero de derniere page 
      StopDrawing() 
    EndIf 
    StopPrinting() 
  EndIf 
EndIf

Publié : sam. 23/août/2008 14:34
par coxco
Ok merci pour ton aide