Impression avec Gambas - Imprimer une textarea( Temps de lecture estimé à 1 min 20 sec )
Imprimer une TextArea
Réalisé par taoteblues
Vous avez la possibilité d 'utiliser le code basique suivant:
Public Sub Button_Click()
Draw.Begin(Printer)
Draw.Text(TextArea1.Text, 200, 200, Printer.With, Printer.Height)
Draw.End
End
ou le code suivant qui permet d 'imprimer le contenu d 'une TextArea en tenant compte des limites de la page, de ne pas couper de mot, de faire un retour à la ligne et de continuer l 'impression sur les pages suivantes.
PUBLIC SUB Button_Click()
DIM Ileft AS Integer
DIM IRight AS Integer
DIM ITop AS Integer
DIM IBot AS Integer
DIM textaimprimer AS String
DIM ITextposY AS Integer
DIM ITextPosX AS Integer
DIM ITextposX1 AS Integer
DIM Txtligne AS String
DIM Nextword AS String
DIM IprinterIwidth AS Integer
DIM IprinterIheight AS Integer
Printer.Size = A4
ILeft = 200
IRight = 800
ITop = 200
IBot = 200
IprinterIheight = Printer.Height - ITop - IBot - 400
IprinterIwidth = Printer.Width - ILeft - IRight
' nous découpons le texte à chaque saut de ligne
ITextPosX = 200
ITextposY = 100
'début d 'impression
Draw.Begin(Printer)
textaimprimer = TextArea1.Text
FOR EACH Txtligne IN Split(textaimprimer, n )
'Réglages personnels des bordures et de la taille des caractères
ITextPosX = 200
ITextposY = ITextposY + Draw.TextHeight( TaotE )
Draw.ForeColor = Color.Black
Draw.Font.Bold = FALSE
Draw.Font.Italic = FALSE
Draw.Font.Underline = FALSE
Draw.Font.Size = 10
' nous découpons chaque ligne en mots
FOR EACH NextWord IN Split(TxtLigne, )
IF ITextposY >= IprinterIheight THEN
ITextposY = 100
Printer.NewPage
ENDIF
'si la longueur du mot trop grande
ITextposX1 = ITextposX + Draw.TextWidth(NextWord & )
IF ITextPosX1 >= IprinterIwidth THEN
ITextPosX = 200
ITextposY = ITextposY + Draw.TextHeight( TaoteBlueS )
ENDIF
' nous passons le mot à l 'impression
Draw.Text(NextWord & , ILeft + ITextPosX, ITop + ITextposY)
ITextposX = ITextposX + Draw.TextWidth(NextWord & )
NEXT
NEXT
Draw.End
END
);