DUVIDA COM PRINTFORM

NILTON.VIANNA 03/06/2016 10:38:12
#462985

Bom dia
Estou migrando um sistema em Vb6 para Net
No Vb6 eu tenho dois formulários
Ao abrir o Form1 tenho um botão de impressão para imprimir o Form2 sem necessariamente visualiza-lo para imprimir

Não vb.net essa função não funciona
Alguém diria uma ideia pra resolver isso.

Grato
MOUSER 03/06/2016 11:46:43
#462994
Você tem dois formularios, um para inclusão e visualização de dados e outro para visualizar a pré impressão? Se for isso, eu recomendo dar uma pesquisada sobre a ferramenta que muitos amigos e inclusive eu, que uso muito no VB.NET, que se chama Crystal Report, ele emula tudo e você só precisa organizar as informações para que o CR possa mandar o relatorio para impressora e antes poder visualizar a impressão também.
KURTGU 03/06/2016 17:14:22
#463011
Procure tambem sobre PrintPreview Ou PrintDocument

NILTON.VIANNA 06/06/2016 08:16:07
#463089

Amigo estou usando este código funciona mais o problema é seguinte alinhamentos

Exemplo:
Nome Código
HHHHHHHHHHHHHHHHHHHHH 120
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 200
HHHHHHHHHHHHHH 400


Private Sub PrintDocument_PrintPage(sender As Object, e As PrintPageEventArgs)
Dim printFont As System.Drawing.Font = New Font([Ô]Arial[Ô], 9)
Dim topMargin As Double = e.MarginBounds.Top
Dim yPos As Double = 0
Dim linesPerPage As Double = 0
Dim count As Integer = 0
Dim texto As String = [Ô][Ô]
Dim FonteNegrito As Font
Dim FonteRodape As Font
Dim FonteNormal As Font
Dim row As System.Windows.Forms.DataGridViewRow

Dim MargemDireita As Single = 800
Dim MargemEsquerda As Single = 35
Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)

Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Integer = 0

[ô]Variaveis das margens
Dim MargemSuperior As Single = e.MarginBounds.Top + 100
Dim MargemInferior As Single = e.MarginBounds.Bottom

FonteNegrito = New Font([Ô]Arial[Ô], 14, FontStyle.Bold)
FonteNormal = New Font([Ô]Arial[Ô], 10)
FonteRodape = New Font([Ô]Arial[Ô], 8)

Dim SharpInicio As New Rectangle(35, 65, 764, 30)

[ô]Nós calculamos o número de linhas que se encaixam em cada página
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics)

yPos = topMargin + (count * printFont.GetHeight(e.Graphics))
e.Graphics.DrawString(texto, printFont, System.Drawing.Brushes.Black, 0, yPos)
[ô]Saímos Linha Uma de de Separação
count += 2
[ô]Atravessamos as fileiras do DataGridView até chegarmos
[ô]linhas que se encaixam nos cada página ou no final da grelha.

While count < linesPerPage AndAlso i < GridP.Rows.Count
row = GridP.Rows(i)
texto = [Ô][Ô]

For Each celda As System.Windows.Forms.DataGridViewCell In row.Cells
[ô]Nós verificamos que a célula é de qualquer valor, se
[ô]adicionar linhas para permitir que isso é muito importante
If celda.Value IsNot Nothing Then
texto += vbTab + celda.Value.ToString()
End If
Next

[ô]Calculamos a posição na qual a linha está escrito
yPos = topMargin + (count * printFont.GetHeight(e.Graphics))

[ô][ô]Nós escrevemos a linha com o objeto Graphics
e.Graphics.DrawString(texto, printFont, System.Drawing.Brushes.Black, 0, yPos)
[ô][ô]Nós aumentamos contadores
count += 1
i += 1
End While

[ô][ô]Uma vez fora do circuito vamos verificar se existem mais linhas
[ô][ô]pelo impressão, se deixados vontade na página seguinte
If i < GridP.Rows.Count Then
e.HasMorePages = True
Else
[ô]se chegar ao fim, para definir HasMorePages false para concluir a impressão
e.HasMorePages = False
i = 0
End If

End Sub
KURTGU 06/06/2016 08:27:23
#463090
Voce ta jogando os dados do Datagrid?
NILTON.VIANNA 06/06/2016 08:37:57
#463092
isso tenho um Datagrid as paginas sai todas
Tópico encerrado , respostas não são mais permitidas