IMPRESSÃO

 Tópico anterior Próximo tópico Novo tópico

IMPRESSÃO

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#478318 - 07/12/2017 09:58:07

VAMLA
INDAIATUBA
Cadast. em:Maio/2015


Olá pessoal.
Estou com o seguinte problema: tenho um sistema para lanchonetes. E consequentemente imprimo tudo em impressora térmica.
Acontece que quando dá o tamanho de uma folha A4, corta a impressão e ela não continua.
Como devo proceder?
Segue como eu fiz.
Dim FonteTitulo = New Font("Arial", 12, FontStyle.Bold)
        Dim FonteSubtitulo = New Font("Arial", 8, FontStyle.Regular)
        Dim MargemEsquerda As Single = e.MarginBounds.Left

        Dim x As Single = 0.0F
        Dim y As Single = 0.0F
        Dim width As Single = 280.0F
        Dim height As Single = 50.0F
        Dim drawRect As New RectangleF(x, y, width, height)



        ' Draw rectangle to screen.
        Dim blackPen As New Pen(Color.Black)
        e.Graphics.DrawRectangle(blackPen, x, y, width, height)

        TBPESQ = New ADODB.Recordset
        TBPESQ.CursorLocation = ADODB.CursorLocationEnum.adUseClient
        TBPESQ.Open("Select * from empresa", Conexao, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic)
        If (TBPESQ.RecordCount > 0) Then
            TBPESQ.MoveFirst()
            e.Graphics.DrawString(TBPESQ("razao_social").Value, FonteTitulo, Brushes.Black, 3, 5, New StringFormat())
        End If
        TBPESQ.Close()
        e.Graphics.DrawString("QUANTIDADE EM ESTOQUE", FonteSubtitulo, Brushes.Black, 3, 30, New StringFormat())
        Dim vEspacoLinhas As Integer
        vEspacoLinhas = 55
        e.Graphics.DrawString("Codigo", FonteSubtitulo, Brushes.Black, 0, vEspacoLinhas, New StringFormat())
        e.Graphics.DrawString("Produto", FonteSubtitulo, Brushes.Black, 55, vEspacoLinhas, New StringFormat())
        e.Graphics.DrawString("Qtde", FonteSubtitulo, Brushes.Black, 250, vEspacoLinhas, New StringFormat())
        vEspacoLinhas = vEspacoLinhas + 25
        TB = New ADODB.Recordset
        TB.CursorLocation = ADODB.CursorLocationEnum.adUseClient
        TB.Open("select * from produto where descricao >= '" & cmb_produto_inicial.Text & "' and descricao <= '" & cmb_produto_final.Text & "' and id_familia >= '" & txt_familia_inicial.Text & "' and id_familia <= '" & txt_familia_final.Text & "' order by descricao", Conexao, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
        If TB.RecordCount > 0 Then
            While TB.EOF = False
                e.Graphics.DrawString(TB("id_produto").Value, FonteSubtitulo, Brushes.Black, 0, vEspacoLinhas, New StringFormat())
                e.Graphics.DrawString(Mid(TB("descricao").Value, 1, 29), FonteSubtitulo, Brushes.Black, 55, vEspacoLinhas, New StringFormat())
                e.Graphics.DrawString(Format(TB("quantidade_estoque").Value, "##0.00").ToString.PadLeft(7, " "), FonteSubtitulo, Brushes.Black, 245, vEspacoLinhas, New StringFormat())
                TB.MoveNext()
                vEspacoLinhas = vEspacoLinhas + 25
            End While
        End If
        e.HasMorePages = False

Att.

V8 Sistemas

#478320 - 07/12/2017 10:14:55

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Deixa eu adivinhar: Esse código você "pegou na net" e não entende direito o que ele faz, certo? Você percebeu que a base da sua impressão é um retângulo? Já tentou redimensionar esse retângulo para o tamanho desejado?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#478321 - 07/12/2017 10:34:28

VAMLA
INDAIATUBA
Cadast. em:Maio/2015


Citação:
:
Deixa eu adivinhar: Esse código você "pegou na net" e não entende direito o que ele faz, certo? Você percebeu que a base da sua impressão é um retângulo? Já tentou redimensionar esse retângulo para o tamanho desejado?



bom dia!
Não peguei na net não.
É que quando eu fiz, não sabia que ele pegava apenas o tamanho a4. E no caso ele imprime somente uma folha.
E eu precisaria montar alguma coisa, para ele imprimir enquanto tiver produto

você já usou isso?

Att.

V8 Sistemas

#478322 - 07/12/2017 10:56:06

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Bem, então aqui vão algumas dicas:
1 - Não use ADO, use ADO.NET, o que você está fazendo agora(recordset e talz), é criar uma dependência COM que é totalmente desnecessária.
2 - Crie classes especializadas para impressão. Você não precisa de tanto código, veja o que está fazendo comumente e use métodos adequados.

Tente fazer um resumo do que o código está fazendo. Passe-o linha à linha e veja o que está sendo feito e assim vai ver onde está "faltando algo".

O que estou tentando fazer é te ajudar a entender direitnho o que está sendo feito, não vai ser frutífero para você eu simplesmente passar a solução pronta.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#478323 - 07/12/2017 10:58:41

VAMLA
INDAIATUBA
Cadast. em:Maio/2015


Obrigado, mas ja resolvi

Antes de mandar a impressão, coloque o seguinte:

ImpRel1.DefaultPageSettings.PaperSize = New System.Drawing.Printing.PaperSize("Customizado", 200, 10000)

Obrigado

Att.

V8 Sistemas

#478324 - 07/12/2017 11:04:50

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Realmente não vejo como utilizar térmica para imprimir gráficos, principalmente em caso de itens de venda.
Imprima em um arquivo texto mande para a porta com da impressora transformando em bytes.
Arquivo texto porque vc pode utilizar esse arquivo para imprimir em uma impressora da rede, dispensa instalação via spool do windows, evita configuração de tamanho de papel na impressora.
Só vejo vantagens.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por VAMLA em 07/12/2017 10:58:53