IMPRIMIR TEXTBOX COMO APARECE NO FORMULARIO
Bom dia, amigos.
Já procurei por vários caminhos, mas talvez não tenha ido pelo caminho certo.
Estou a imprimir um pedido de compras. Neste pedido há um campo complemento, que pode ou não ser preenchido pelo usuário. Só que o campo é uma TextBox Multiline, portanto pode ter várias linhas e nem todas as linhas tem quebra para saltar para a próxima.
Então, preciso imprimir esse campo, mas quero que ele seja impresso da mesma maneira que aparece no formulário, com os mesmos alinhamentos.
Alguém me ajuda?
Até mais
Já procurei por vários caminhos, mas talvez não tenha ido pelo caminho certo.
Estou a imprimir um pedido de compras. Neste pedido há um campo complemento, que pode ou não ser preenchido pelo usuário. Só que o campo é uma TextBox Multiline, portanto pode ter várias linhas e nem todas as linhas tem quebra para saltar para a próxima.
Então, preciso imprimir esse campo, mas quero que ele seja impresso da mesma maneira que aparece no formulário, com os mesmos alinhamentos.
Alguém me ajuda?
Até mais
Resumindo você quer que quando chegue no final ali ele já pule para a outra linha em vez de continuar na frente? Entendi certo?
Certo, tem que imprimir do jeitinho que aparece no formulário.
Repare na imagem do relatório. O alinhamento não está igual à TextBox.
Até mais.
Repare na imagem do relatório. O alinhamento não está igual à TextBox.
Até mais.
Resolvido.
Encontrei um exemplo na NET, adaptei e consegui o que eu queria.
Se alguém se interessar, eis o código abaixo:
[txt-color=#007100][ô] declarar as variáveis[/txt-color]
Dim numChars As Integer
Dim numLines As Integer
Dim stringForPage As String
Dim PrintFont As Font
Dim StringToPrint As String
Dim strFormat As New StringFormat()
[txt-color=#007100][ô] sintaxe de RectangleF: (coluna, linha, largura, tamanho)
[ô] desenha um retângulo nas coordenadas especificadas, onde será impresso
[ô] o conteúdo da TextBox.[/txt-color]
Dim rectDraw As New RectangleF(165, 225, 510, 488)
[txt-color=#007100][ô] aqui, a fonte tem que ser a mesma da que está na TextBox,
[ô] caso contrário, o alinhamento das linhas não será o mesmo.[/txt-color]
PrintFont = New Font([Ô]Microsoft Sans Serif[Ô], 8, FontStyle.Regular)
Dim sizeMeasure As New SizeF(510, 488 - PrintFont.GetHeight(e.Graphics))
strFormat.Trimming = StringTrimming.Word
[txt-color=#007100][ô] TextBox que será impressa.[/txt-color]
StringToPrint = PedidosdeCompra.TxtComplemento.Text
[txt-color=#007100][ô] imprimindo o conteúdo da TextBox[/txt-color]
e.Graphics.MeasureString(StringToPrint, PrintFont, sizeMeasure, strFormat, numChars, numLines)
stringForPage = StringToPrint.Substring(0, numChars)
e.Graphics.DrawString(stringForPage, PrintFont, Brushes.Black, rectDraw, strFormat)
Até mais.
Encontrei um exemplo na NET, adaptei e consegui o que eu queria.
Se alguém se interessar, eis o código abaixo:
[txt-color=#007100][ô] declarar as variáveis[/txt-color]
Dim numChars As Integer
Dim numLines As Integer
Dim stringForPage As String
Dim PrintFont As Font
Dim StringToPrint As String
Dim strFormat As New StringFormat()
[txt-color=#007100][ô] sintaxe de RectangleF: (coluna, linha, largura, tamanho)
[ô] desenha um retângulo nas coordenadas especificadas, onde será impresso
[ô] o conteúdo da TextBox.[/txt-color]
Dim rectDraw As New RectangleF(165, 225, 510, 488)
[txt-color=#007100][ô] aqui, a fonte tem que ser a mesma da que está na TextBox,
[ô] caso contrário, o alinhamento das linhas não será o mesmo.[/txt-color]
PrintFont = New Font([Ô]Microsoft Sans Serif[Ô], 8, FontStyle.Regular)
Dim sizeMeasure As New SizeF(510, 488 - PrintFont.GetHeight(e.Graphics))
strFormat.Trimming = StringTrimming.Word
[txt-color=#007100][ô] TextBox que será impressa.[/txt-color]
StringToPrint = PedidosdeCompra.TxtComplemento.Text
[txt-color=#007100][ô] imprimindo o conteúdo da TextBox[/txt-color]
e.Graphics.MeasureString(StringToPrint, PrintFont, sizeMeasure, strFormat, numChars, numLines)
stringForPage = StringToPrint.Substring(0, numChars)
e.Graphics.DrawString(stringForPage, PrintFont, Brushes.Black, rectDraw, strFormat)
Até mais.
Tópico encerrado , respostas não são mais permitidas