PRINT

CAIO.FR.SP 30/08/2009 05:07:22
#321369
Galera estou desenvolvendo uma função para imprimir o cupom de venda com o print mais estou com um proble no meio da função. peguei parte do codigo aqui mesmo no site. como nao sei mexer mto com o print gostaria da ajuda de voces para Gerar a função.
abaixo a função.
O problema esta na parte central da função, onde sao colocados os produtos da venda no cupom. aceito sujestões e alterações.

Public Pict As PictureBox

Public Sub Gerar_Cupom(Venda As String, lst As ListView, total As String, _
Juros As String, Desconto As String, Recebido As String)
Dim Empresa As String
Dim Rua As String
Dim Fone As String
Dim Cidade As String
Dim Cnpj As String
Dim InscM As String

Set Pict = frm_printcupom.Picture1

Empresa = LerINI([Ô]Empresa[Ô], [Ô]fantasia[Ô], App.Path & [Ô]\config.ini[Ô])
Rua = LerINI([Ô]Empresa[Ô], [Ô]endereco[Ô], App.Path & [Ô]\config.ini[Ô])
Fone = LerINI([Ô]Empresa[Ô], [Ô]fone1[Ô], App.Path & [Ô]\config.ini[Ô])
Cidade = LerINI([Ô]Empresa[Ô], [Ô]cidade[Ô], App.Path & [Ô]\config.ini[Ô]) & [Ô] - [Ô] & LerINI([Ô]Empresa[Ô], [Ô]estado[Ô], App.Path & [Ô]\config.ini[Ô])
Cnpj = LerINI([Ô]Empresa[Ô], [Ô]cnpj[Ô], App.Path & [Ô]\config.ini[Ô])
InscM = LerINI([Ô]Empresa[Ô], [Ô]inscm[Ô], App.Path & [Ô]\config.ini[Ô])

Pict.FontName = [Ô]Courier New[Ô]
Fonte 10, False, False
Pict.Cls

Pict.Print String(40, [Ô]-[Ô]) [ô]Faz uma Linha
Pict.Print Tab((40 - Len(Empresa)) / 2); Empresa [ô]Centraliza N. Empresa
Pict.Print String(40, [Ô]-[Ô])
Pict.Print Tab((40 - Len(Rua)) / 2); Rua [ô]Centraliza Rua
Pict.Print Tab((40 - Len(Fone)) / 2); Fone [ô]Centraliza Dados Adicionais
Pict.Print Tab((40 - Len(Cidade)) / 2); Cidade [ô]Centraliza Cidade
Pict.Print [Ô] CGC:[Ô]; Tab(21); Cnpj
Pict.Print [Ô] INSC.ESTADUAL:[Ô]; Tab(27); InscM
Fonte 12, True, False
Pict.Print Tab(10); [Ô]CUPOM FISCAL[Ô]
Fonte 10, False, False
Pict.Print Tab(2); Format(Date, [Ô]dd/mm/yy[Ô]); [Ô] [Ô]; Format(Time, [Ô]hh:mm:ss[Ô]); Tab(26); [Ô]VENDA[Ô] & Format(Venda, [Ô]00000000[Ô]);
Pict.CurrentY = 2150 [ô]Vai para a coluna do Form escolhida
Fonte 12, False, True
Pict.Print Tab(28); [Ô]BR[Ô]
Fonte 10, False, False
Pict.Print String(40, [Ô]-[Ô])

[ô]PARTE QUE INSERE PRODUTOS NO CUPOM
Dim des As String
Dim Qtd As String
Dim Vlru As String
Dim Vlrt As String
Pict.Print [Ô] PROD DESCRIÇÃO[Ô]
Pict.Print [Ô] QTD x VLR UNIT TOTAL[Ô]
Pict.Print String(40, [Ô]-[Ô])
If lst.ListItems.Count = 0 Then Exit Sub
For i = 1 To lst.ListItems.Count
des = lst.ListItems(i).SubItems(1)
Qtd = Format(lst.ListItems(i).SubItems(2), [Ô]000[Ô])
Vlru = Format(lst.ListItems(i).SubItems(3), [Ô]currency[Ô])
Vlrt = lst.ListItems(i).SubItems(4)
Pict.Print [Ô] [Ô]; Format(i, [Ô]000[Ô]); [Ô] [Ô]; Mid(des, 1, 30)
Pict.Print [Ô] [Ô]; Qtd; [Ô] x[Ô]; [Ô] [Ô]; Vlru; Tab(22 - Len(Vlrt)); Vlrt
Next i

[ô]FECHA O CUMPOM
Const Msg As String = [Ô]Obrigado Pela Preferencia[Ô]
Pict.Print String(40, [Ô]-[Ô])
Pict.Print [Ô] Total:[Ô]; Tab(28); Format(total, [Ô]Currency[Ô])
Pict.Print [Ô] Juros:[Ô]; Tab(28); Format(Juros, [Ô]Currency[Ô])
Pict.Print [Ô] Desct:[Ô]; Tab(28); Format(Desconto, [Ô]Currency[Ô])
Pict.Print [Ô] Receb:[Ô]; Tab(28); Format(Recebido, [Ô]Currency[Ô])
Pict.Print String(40, [Ô]-[Ô])
Pict.Print Tab((40 - Len(Msg)) / 2); Msg
End Sub

Private Sub Fonte(Tamanho As Byte, Negrito As Boolean, Italico As Boolean) [ô]Altera a fonte
Pict.FontSize = Tamanho
Pict.FontBold = Negrito
Pict.FontItalic = Italico
End Sub


DANIKULL 30/08/2009 11:27:53
#321376
Amigo boa tarde.
Citação:


For i = 1 To lst.ListItems.Count
des = lst.ListItems(i).SubItems(1)
Qtd = Format(lst.ListItems(i).SubItems(2), [Ô]000[Ô])
Vlru = Format(lst.ListItems(i).SubItems(3), [Ô]currency[Ô])
Vlrt = lst.ListItems(i).SubItems(4)
Pict.Print [Ô] [Ô]; Format(i, [Ô]000[Ô]); [Ô] [Ô]; Mid(des, 1, 30)
Pict.Print [Ô] [Ô]; Qtd; [Ô] x[Ô]; [Ô] [Ô]; Vlru; Tab(22 - Len(Vlrt)); Vlrt
Next i



Esta parte do código que responsável pala inserção dos produtos no cupom esta sendo carrega atraves do objeto ListView.....
Você esta utilizando esta forma de visualização sem deu projeto???

Na minha opinião seria melhor você puxar direto do Banco de Dados somente pelo número da venda.
TECLA 30/08/2009 12:30:08
#321378
Citação:

O problema esta na parte central da função, onde sao colocados os produtos da venda no cupom. aceito sujestões e alterações.



[txt-size=2]Qual o problema?[/txt-size]
CAIO.FR.SP 30/08/2009 14:16:26
#321380
DANIKULL estou usando o listview porque gero o cumpom antes de gravar a venda no banco de dados, mas acho que nao iria haver diferença caso ultiliza-se o banco de dados. em todo caso, aceito opniões. voce viu que nessa parte do codigo esta sendo gerada quebra de linha na inclusao do produto sem a necessidade? tipo.

o certo seria assim

cod descrição
qtd valor unit total

001 PRODUTO TESTE
001 X R$ 5,00 R$ 5,00


mas esta saindo assim:

001 PRODUTO TESTE
001 X R$ 5,00
R$ 5,00


o objeto print seria a melhor forma de gerar o cupom? ou da pra fazer por DATAREPORT?

BETOPMJB 30/08/2009 15:37:47
#321381
caio coloca ; ponto e vigola antes do valor que saindo na linha debaixo que vai dar certo
DANIKULL 30/08/2009 18:33:24
#321387
Boa noite.

Pegue neste treco do código:
Citação:

Pict.Print [Ô] [Ô]; Qtd; [Ô]  x[Ô]; [Ô]  [Ô]; Vlru; Tab([txt-color=#b40404]22[/txt-color] - Len(Vlrt)); Vlrt



Onde está grifado altere vá alterando, tipo, 23, 24, 30.... até você colocar a impressãom em ordem.
Isto esta ocorrendo porque a posição 22 como tabulação esta em cima de uma impressão ja feita pelo objeto, por isso ele coloca a impressão na linha de baixo, ok??
CAIO.FR.SP 30/08/2009 20:48:40
#321396
deu certo aqui. agora setei o pcit como a impressora padrao. como configuro o papel para bobina?
Tópico encerrado , respostas não são mais permitidas