QUEBRA DE LINHA NO PRINTER SEM CORTAR

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

QUEBRA DE LINHA NO PRINTER SEM CORTAR

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#493524 - 18/04/2020 11:15:45

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


Última edição em 18/04/2020 11:17:30 por AMELINHACODE

bom dia pessoal, tenho um grid onde possui varios registros(linhas)... tenho marco as linhas que desejo (.CellPicture = ImgMarcada ) e mando imprimir.

Fica mais ou menos assim:
Proveniente do Pagamento dos pedidos:
00001/01, 00201/03, 00555/02, 00022/03, 00321/01, 00444/01

Porem a impressora aquela termica (bematech th4200), se no me engano de 80 colunas(acho)
e acaba saindo cortado....
como fao para []se no couber[] ele joga o prximo numero para linha de baixo sem cortar, tipo assim:
Proveniente do Pagamento dos pedidos:
00001/01, 00201/03, 00555/02, 00022/03,
00321/01, 00444/01


o codigo que eu fiz foi assim:
             Dim var_Parc As String
             Dim y As Integer
    
             var_Parc = [][]
            
             With grid_Parcelas
                For y = 1 To .Rows - 1
                   .Col = 0
                   .Row = y
    
                   If .CellPicture = ImgMarcada Then
                      If y = 1 Then
                         var_Parc = Format(.TextMatrix(.Row, 3), []00000[]) & []/[] & Format(.TextMatrix(.Row, 4), []00[])
                      Else
                         var_Parc = var_Parc & [], [] & Format(.TextMatrix(.Row, 3), []00000[]) & []/[] & Format(.TextMatrix(.Row, 4), []00[])
                         If y = .Rows - 1 Then Exit For
                      End If
                   End If
                Next y
             End With
            
             Printer.Print Tab(2); []Proveniente do Pagamento dos pedidos: []
             Printer.Print Tab(2); var_Parc





#493531 - 18/04/2020 14:19:20

LAMPIAO
SAO CAETANO DO SUL
Cadast. em:Setembro/2004


Veja, voc vai ter que nesse ponto criar uma funo que retorne a quantidade de caracteres na linha levando em considerao o bloco 0000x/0x e promover a quebra de linha levando para a prxima linha o restante dos bloco 0000x/0x. Infelizmente faz tempo que no uso vb6 e no posso te ajudar nesse detalhe.

Recomendo fortemente que voc v paralelamente estudando C#, voc vai ver que sua vida nessa rea ser muito mais fcil, enquanto que permanecer no VB6 a tendncia ir ficando mais difcil de fazer as coisas, principalmente quando seus clientes comearem a pedir coisas que so extremamente complicadas de se fazer no VB6.

Abraos,

Lembre-se, fique em casa



Resposta escolhida #493539 - 18/04/2020 18:44:28

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Citação:
criar uma funo que retorne a quantidade de caracteres na linha levando em considerao o bloco 0000x/0x


se for isso simples ...... len(suastring)

____________________________________________________________________
Episcopal Studios


#493541 - 18/04/2020 19:23:59

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


Citação:
:
criar uma funo que retorne a quantidade de caracteres na linha levando em considerao o bloco 0000x/0x

se for isso simples ...... len(suastring)


Pensei justamente nele, porem tem a parte onde no quebrar o 0000x/0x




#493542 - 19/04/2020 01:29:09

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Citação:
Private Function ReturnPrint(ByVal strText As String, iMaxCol As Integer, ByVal strSeparator As String) As String
   Dim strCount() As String
   Dim strJoin As String
   Dim i As Integer
   Dim strReturn As String
  
   strCount = Split(strText, strSeparator)
   strJoin = vbNullString
  
   For i = 0 To UBound(strCount)
      If strJoin = vbNullString And i < UBound(strCount) Then
         If Len(strJoin & strCount(i)) <= iMaxCol Then
            strJoin = strJoin & strCount(i)
         End If
      ElseIf strJoin <> vbNullString And i < UBound(strCount) Then
         If Len(strJoin & strSeparator & strCount(i)) <= iMaxCol Then
            strJoin = strJoin & strSeparator & strCount(i)
         Else
            strReturn = strReturn & strJoin & vbCrLf
            strJoin = vbNullString
            i = i - 1
         End If
      Else
         strReturn = Left(strReturn, Len(strReturn) - 2) & strJoin & strSeparator & strCount(i)
      End If
   Next
   ReturnPrint = strReturn
End Function







Dim iMaxCol As Integer
   Dim var_Parc As String
   Dim strSeparator As String
  
  
   iMaxCol = 80
   strSeparator = [], []
   var_Parc = []00001/00, 00001/01, 00001/02, 00001/03, 00001/04, 00001/05, 00001/06, 00001/07, 00001/08, 00001/09, 00001/10, 00001/11, 00001/12, 00001/13, 00001/14, 00001/15[]

   MsgBox ReturnPrint(var_Parc, iMaxCol, strSeparator)
  

____________________________________________________________________
Episcopal Studios


#493543 - 19/04/2020 01:31:51

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Amelinha v se isso .......... deu trabalho .......... rendeu 1h de relogio



____________________________________________________________________
Episcopal Studios


#493549 - 19/04/2020 16:29:38

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


Citação:
:
Private Function ReturnPrint(ByVal strText As String, iMaxCol As Integer, ByVal strSeparator As String) As String
   Dim strCount() As String
   Dim strJoin As String
   Dim i As Integer
   Dim strReturn As String
  
   strCount = Split(strText, strSeparator)
   strJoin = vbNullString
  
   For i = 0 To UBound(strCount)
      If strJoin = vbNullString And i < UBound(strCount) Then
         If Len(strJoin & strCount(i)) <= iMaxCol Then
            strJoin = strJoin & strCount(i)
         End If
      ElseIf strJoin <> vbNullString And i < UBound(strCount) Then
         If Len(strJoin & strSeparator & strCount(i)) <= iMaxCol Then
            strJoin = strJoin & strSeparator & strCount(i)
         Else
            strReturn = strReturn & strJoin & vbCrLf
            strJoin = vbNullString
            i = i - 1
         End If
      Else
         strReturn = Left(strReturn, Len(strReturn) - 2) & strJoin & strSeparator & strCount(i)
      End If
   Next
   ReturnPrint = strReturn
End Function






Dim iMaxCol As Integer
   Dim var_Parc As String
   Dim strSeparator As String
  
  
   iMaxCol = 80
   strSeparator = [], []
   var_Parc = []00001/00, 00001/01, 00001/02, 00001/03, 00001/04, 00001/05, 00001/06, 00001/07, 00001/08, 00001/09, 00001/10, 00001/11, 00001/12, 00001/13, 00001/14, 00001/15[]

   MsgBox ReturnPrint(var_Parc, iMaxCol, strSeparator)
  


Ol EPISCOPAL,

Ficou top... imagino o trabalho que deu...
Deu o seguinte resultado:

00001/00, 00001/01, 00001/02, 00001/03, 00001/04, 00001/05, 00001/06,
00001/0700001/08, 00001/09, 00001/10, 00001/11, 00001/12, 00001/13, 00001/14, 00001/15

Notei duas coisas:
1. O primeiro item da segunda linha, ele removeu a virgula, veja que 00001/0700001/08 esto juntos
2. A segunda linha no quebrou no final... continuou





#493552 - 19/04/2020 18:53:20

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


Última edição em 19/04/2020 19:45:53 por EPISCOPAL

Citação:
Notei duas coisas:
1. O primeiro item da segunda linha, ele removeu a virgula, veja que 00001/0700001/08 esto juntos
2. A segunda linha no quebrou no final... continuou




kkkkkkk ......... voces mulheres sempre criteriosas e observadoras ....... kkkkkkkkkkk


tambem notei um bug ......... se diminuir o imaxcol para 40 d um erro .......... vou melhorar pra vc ....... vou fazer outro algoritimo.


____________________________________________________________________
Episcopal Studios


#493553 - 19/04/2020 19:45:14

EPISCOPAL
VARZEA GRANDE
Cadast. em:Maio/2009


 Anexos estao visíveis somente para usuários registrados

Consegui ......... veja o anexooooooooo

____________________________________________________________________
Episcopal Studios


#493578 - 20/04/2020 21:23:14

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


Citação:
:
Consegui ......... veja o anexooooooooo


Nossa EPISCOPAL, ficou melhor do que eu queria... no conseguiria nunca fazer nessa perfeio

Muito obg mesmo, bjos



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


Tópico encerrado, respostas não sao permitidas
Encerrado por AMELINHACODE em 20/04/2020 21:23:34