IMPRIMIR TEXTBOX MULTILINE

PERCIFILHO 16/11/2011 09:50:28
#389210
Bom dia, pessoal.

Gostaria de imprimir o conteúdo de uma TextBox (TxtObservacoes) que é setada como MutiLine, lendo linha a linha e jogando o conteúdo de cada linha no local específico do relatório.

Fiz dessa maneira, porém não deu certo:

PosicaoDaLinha=220
For Each Linha As String In Documentos.TxtObservacoes.Lines
e.Graphics.DrawString(Linha, New Font([Ô]Microsoft Sans Serif[Ô], 9, FontStyle.Bold), Brushes.Black, 146, PosicaoDaLinha + 20)
PosicaoDaLinha=PosicaoDaLinha+20
Next

Imprime apenas a primeira linha.

PERCIFILHO 16/11/2011 16:59:17
#389231
Ninguém ???
ALTAIR148 16/11/2011 17:15:48
#389233
Deixa eu ver se entendi, seu texbox tem várias linhas e cada linha vc joga em um lugar diferente no relatorio?
PERCIFILHO 17/11/2011 07:11:14
#389259
é um campo de observações. Preciso imprimir do mesmo jeito que está na TextBox. A primeira linha, depois a segunda e assim por diante até que termine todo o texto digitado. é como se fosse fazer um For...Next até acabar o texto digitado, pois eu não sei quantas linhas terão sido digitadas na TextBox, pode ser que tenha 1 linha e pode ser que tenha várias.
No VB6 eu até tinha uma função que fazia isso, porém não encontrei em minhas fontes antigas.

Até mais.
ALTAIR148 17/11/2011 07:44:02
#389262
Bom, veja se assim funciona.

PosicaoDaLinha=220
For Each Linha As String In Documentos.TxtObservacoes.Lines
e.Graphics.DrawString(Linha, New Font([Ô]Microsoft Sans Serif[Ô], 9, FontStyle.Bold), Brushes.Black, 146, PosicaoDaLinha + 20)
PosicaoDaLinha +=20
Next
PERCIFILHO 17/11/2011 08:21:45
#389265
Altair, é assim que funciona: o usuário vai digitando a observação e se no final da linha ele teclar ENTER para passar para a linha de baixo da TextBox, eu consigo pegar a linha, porém se ele for digitando tudo sem dar ENTER, na hora de imprimir, vai imprimir como se fosse uma única linha. Por isso, teria que ter uma funcão que pegasse linha a linha da TextBox e aí, sim eu jogaria no local certo do relatório. Será que é muito difícil?

Até mais.
ALTAIR148 17/11/2011 08:28:18
#389266
Bom dia,

Agora sim acho que entendi, todas as linhas, não importa se houve quebra de linha elas tem que sempre estar no mesmo tamanho.

Vou ver o que dá para fazer. E já posto o resultado.
PERCIFILHO 17/11/2011 09:15:46
#389269
Valeu, amigo, aguardo.

Até mais.
ALTAIR148 17/11/2011 09:50:08
#389271
Olha, não sei se resolve o seu problema, mas no exemplo fiz assim: ele verifica quantos caracteres digitados, no exemplo são 30, a cada 30 caracteres ele ele da um tipo um enter assim adicionando uma nova linha. Testa ai e vê se resolve o seu caso.
PERCIFILHO 17/11/2011 10:01:55
#389274
Altair, muito obrigado pela paciência, porém dessa forma não fica muito correto, pois se estiver no meio da digitação de uma palavra, ocorre o ENTER e a palavra fica separada incorretamente. Eu encontrei a função do VB6 que eu utilizava (não é minha, foi retirada de algum lugar da Net):

[ô] função PegaLinha da TextBox
Private Function PegaLinhaContador(txt) As Long
PegaLinhaContador = SendMessageAsLong(txt.hWnd, EM_GETLINECOUNT, 0, 0)
End Function


[ô]// preenche o buffer com uma linha de texto definida em LinhaNumero
[ô]// a primeira linha começa no zero
Private Function PegaLinha(txt As TextBox, LinhaNumero As Long) As String
[ô]// caracteres por linha
Const MAX_CHAR_PER_LINE As Long = 69
Dim ByteLo As Integer
Dim ByteHi As Integer
Dim rtn As Long
Dim Buffer As String
ByteLo = MAX_CHAR_PER_LINE And (255)
ByteHi = Int(MAX_CHAR_PER_LINE / 256)
Buffer = Chr$(ByteLo) + Chr$(ByteHi) + Space$(MAX_CHAR_PER_LINE - 2)
rtn = SendMessageAsString(txt.hWnd, EM_GETLINE, LinhaNumero, Buffer)
PegaLinha = Left$(Buffer, rtn)
End Function


Para imprimir fazia assim:
n = PegaLinhaContador(TxtObservacoes)
For i = 1 To n
Print #1, Tab(2); PegaLinha(TxtObservacoes, i - 1)
Next


Não sei se, de repente, dá para converter o código para o VB.Net. Eu, pela minha pouca experiência, não consigo fazer isso.

Se alguém souber, ou me der outra forma de fazer o que eu preciso, agradeço muito.

Até mais.
ALTAIR148 17/11/2011 10:10:49
#389277
Bom amigo, deixa ai que quem sabe alquem pode lhe ajudar.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas