MARGEM ETIQUETAS

 Tpico anterior Prximo tpico Novo tpico

MARGEM ETIQUETAS

ASP CLASSICO

 Compartilhe  Compartilhe  Compartilhe
#305428 - 25/03/2009 12:53:20

USUARIO.EXCLUIDOS

Cadast. em:


boa tarde pessoal..
estou desenvolvendo uma rotina para impresso de etiquetas

pretendo geral essas etiquetas de acordo com a configurao q o usrio escolher
com os campos:
    qtd de colunas
    qtd de linhas
    largura
    altura
    margem sup
    margem inf
    margem esquerda
    margem direita
    espacamento horizontal e vertical.

bom, minha duvida(s) eh o seguinte: As margens sup, inf, esq e dir so referente a margem da impresso da etiqueta em relao ao campo ou da pagina?

alguem tem alguma ideia de como poderia imprimir.. uso o objeto printer e as margens so medidas em mm.

obrigado...
    




Resposta escolhida #305461 - 25/03/2009 15:55:03

LCSD
SAO PAULO
Cadast. em:Janeiro/2001


as margens so em realo a pagina, veja este exemplo



repare que margem inferior e lateral direita no existem, isto ser feito pelo tamanho da etiqueta.

veja esta funo retirada do site VBWEB

[´]COLE ISTO EM UM MODULO:

Option Explicit
Public Enum MyEtiquetas
    Avery5160 = 0
    Avery5096 = 1
End Enum
Public HorizontalMargin, VerticalMargin As Single

[´]---------------------------------------------------------------------------------------
[´] Procedure : PrintEtiqueta
[´] DateTime  : 11/01/2004 15:51
[´] Author    : Paulo Cezar Barbosa, www.sharmaq.com.br
[´] Purpose   : Rotina para imprimir etiquetas mais facilmente
[´]---------------------------------------------------------------------------------------
[´]
Sub PrintEtiqueta(Modelo As MyEtiquetas, Linha As Single, Coluna As Single, Texto1 As String, Optional Texto2 As String =   , Optional Texto3 As String =   , Optional Texto4 As String =   , Optional Texto5 As String =   )
[´]Etiqueta Avery 5160   (2,5 x 6,6 cm)
[´]Etiqueta Avery 5096   (9,6 x 9,6 cm)
Coluna = Coluna - 1
Linha = Linha - 1

If Modelo = Avery5160 Then
    Printer.CurrentX = 0.48 + (6.98 * Coluna)
    Printer.CurrentY = 1.27 + (2.54 * Linha)
    Printer.FontBold = True
    Printer.Print Texto1
    Printer.FontBold = False
    If Texto2 <>    Then
        Printer.CurrentX = 0.48 + (6.98 * Coluna)
        Printer.CurrentY = 1.27 + (2.54 * Linha) + Printer.TextHeight( A ) + 0.1
        Printer.Print Texto2
    End If
    If Texto3 <>    Then
        Printer.CurrentX = 0.48 + (6.98 * Coluna)
        Printer.CurrentY = 1.27 + (2.54 * Linha) + (Printer.TextHeight( A ) + 0.1) * 2
        Printer.Print Texto3
    End If
    If Texto4 <>    Then
        Printer.CurrentX = 0.48 + (6.98 * Coluna)
        Printer.CurrentY = 1.27 + (2.54 * Linha) + (Printer.TextHeight( A ) + 0.1) * 3
        Printer.Print Texto4
    End If
    If Texto5 <>    Then
        Printer.CurrentX = 0.48 + (6.98 * Coluna)
        Printer.CurrentY = 1.27 + (2.54 * Linha) + (Printer.TextHeight( A ) + 0.1) * 4
        Printer.Print Texto5
    End If
End If
If Modelo = Avery5096 Then
    Printer.CurrentX = 0.32 + (6.98 * Coluna)
    Printer.CurrentY = 1.27 + (7.62 * Linha)
    Printer.FontBold = True
    Printer.Print Texto1
    Printer.FontBold = False
    If Texto2 <>    Then
    Printer.CurrentX = 0.32 + (6.98 * Coluna)
    Printer.CurrentY = 1.27 + (7.62 * Linha) + (Printer.TextHeight( A ) + 0.1)
        Printer.Print Texto2
    End If
    If Texto3 <>    Then
        Printer.CurrentX = 0.32 + (6.98 * Coluna)
        Printer.CurrentY = 1.27 + (7.62 * Linha) + (Printer.TextHeight( A ) + 0.1) * 2
        Printer.Print Texto3
    End If
    If Texto4 <>    Then
        Printer.CurrentX = 0.32 + (6.98 * Coluna)
        Printer.CurrentY = 1.27 + (7.62 * Linha) + (Printer.TextHeight( A ) + 0.1) * 3
        Printer.Print Texto4
    End If
    If Texto5 <>    Then
        Printer.CurrentX = 0.32 + (6.98 * Coluna)
        Printer.CurrentY = 1.27 + (7.62 * Linha) + (Printer.TextHeight( A ) + 0.1) * 4
        Printer.Print Texto5
    End If
End If
End Sub

[´]----------------------------------
[´]Setup Printer
[´]This is needed for most of the
[´]procedures and functions in this
[´]module to work.
[´]----------------------------------
Public Sub SetupPrinter()
[´]Set printer[´]s scale to centimeters
Printer.ScaleMode = vbCentimeters

[´]Set paper margin
HorizontalMargin = 1 + ((21 - Printer.ScaleWidth) / 2)
VerticalMargin = 1.5 + ((29.7 - Printer.ScaleHeight) / 2)
End Sub

[´]----------------------------------
[´]Quick Print
[´]----------------------------------
Public Sub QuickPrint(strPrintText)

Printer.Print   ;
Printer.Print strPrintText
Printer.EndDoc

End Sub

[´]----------------------------------
[´]Easily reset font types and sizes
[´]----------------------------------
Public Sub SetFont(size As Integer, b, i, u, s As Boolean, Optional NameF As String =  Arial )

With Printer

[´]Set the fonts
.ForeColor = RGB(0, 0, 0) [´]Black color
[´]Making Arial font type the default font
.FontName = NameF

[´]These are all variables
.FontSize = size
.FontBold = b
.FontItalic = i
.FontUnderline = u
.FontStrikethru = s

End With

End Sub

[´]------------------------
[´]Justify center
[´]-------------------------
Public Sub AlignCenter(ByVal strText As String)
      Printer.CurrentX = ((Printer.ScaleWidth - Printer.TextWidth(strText)) / 2)
End Sub

[´]------------------------
[´]Justify right
[´]-------------------------
Public Sub AlignRight(ByVal strText As String)
      Printer.CurrentX = Printer.ScaleWidth - 2
End Sub

[´]------------------------
[´]Justify left
[´]-------------------------
Public Sub AlignLeft(ByVal strText As String)
      Printer.CurrentX = Printer.CurrentX + 2
End Sub

[´]-------------------------
[´]Get Current X
[´]-------------------------
Public Function GetX() As Single
GetX = Printer.CurrentX
End Function

[´]-------------------------
[´]Get current Y
[´]-------------------------
Public Function GetY() As Single
GetY = Printer.CurrentY
End Function

[´]------------------------
[´]Print line
[´]-------------------------
Public Sub PrintLine(Optional LeftPos As Single = 0)
    Printer.Line (LeftPos, Printer.CurrentY)-(Printer.ScaleWidth, Printer.CurrentY)
End Sub

[´]-------------------
[´]Check Page length
[´]-------------------
Public Sub CheckPageLen()
    If EndOfPage Then
        Printer.NewPage
    End If
End Sub

[´]------------------------
[´]Check for End-of-Page
[´]-------------------------
Public Function EndOfPage() As Boolean
Dim n As Single
    n = Printer.ScaleHeight - 2
    If Printer.CurrentY = n Then EndOfPage = True
End Function


[´]-------------------------------------------------------------
[´]Print header/footer/page number
[´]-------------------------------------------------------------
Public Sub PrintHeader(strheader As String)
Printer.CurrentY = VerticalMargin - 1
Printer.CurrentX = HorizontalMargin

Printer.Print   ;

SetFont 36, True, True, True, False
pCenter strheader
Printer.Print strheader
Printer.EndDoc

End Sub

Public Sub PrintFooter(strfooter As String)

Printer.CurrentY = Printer.ScaleHeight - 1.5
Printer.CurrentX = HorizontalMargin
Printer.Print   ;
SetFont 12, False, False, False, False
pCenter strfooter
Printer.Print strfooter
Printer.EndDoc

End Sub

Public Sub PrintPageNum(PageNum As String)

With Printer
.CurrentY = Printer.ScaleHeight - 0.5
.CurrentX = HorizontalMargin
End With

SetFont 10, False, False, False, False
pCenter PageNum
Printer.Print   ;
Printer.Print PageNum
Printer.EndDoc

End Sub



[´]PARA CHAMAR FAA ASSIM:
SetupPrinter
SetFont 10, False, False, False, False
PrintEtiqueta Avery5160, 1, 1,  Linha 1 ,  Linha 2 ,  Linha 3 ,  Linha 4 ,  Linha 5
PrintEtiqueta Avery5160, 1, 2,  Linha 1a ,  Linha 2a ,  Linha 3a ,  Linha 4a ,  Linha 5a


e isso

  
Quando precisar, pode contar comigo....
E quando precisar, no esquea de agradecer, pois a educao a ALMA DO NEGCIO...


Obrigado.

Luiz Cesar

#305465 - 25/03/2009 16:13:26

USUARIO.EXCLUIDOS

Cadast. em:


Obrigado Marcelo, vou testar aki.. ;)





#305818 - 28/03/2009 13:41:10

USUARIO.EXCLUIDOS

Cadast. em:


Boa tarde.. consegui resolver o problema :D
disponibilizo as funes q utilizei. pode ser ºtil para algum um dia..
obrigado
                                                              
private Colunas                             As Integer
private Linhas                              As Integer
private Largura                             As Double
private Altura                              As Double
private Margem_esquerda                     As Double
private Margem_superior                     As Double
private Espacamento_horz                    As Double
private Espacamento_vert                    As Double

Public Function Etiquetas(ByVal Modelo As Long, Etiquetas() As Long) As Boolean
    On Error GoTo Trata_Erros
    Dim SQL                       As String
    
    Etiquetas = False
    
    [´]chamada impressora
    
    SQL =  Select colunas, linhas, largura, altura, margem_esq, margem_sup, espc_hrz, espc_vert   & _
                 From Etiquetas Where codigo =   & Modelo
    Set rst = Con.Execute(SQL)
    
    If rst.EOF Then Exit Function
    
    Colunas = CInt(rst.Fields( colunas ))
    Linhas = CInt(rst.Fields( linhas ))
    Largura = CDbl(rst.Fields( largura ))
    Altura = CDbl(rst.Fields( altura ))
    Margem_esquerda = CDbl(rst.Fields( margem_esq ))
    Margem_superior = CDbl(rst.Fields( margem_sup ))
    Espacamento_horz = CDbl(rst.Fields( espc_hrz ))
    Espacamento_vert = CDbl(rst.Fields( espc_vert ))
    rst.Close

    If Not ImpDados(Etiquetas()) Then Exit Function
    Printer.EndDoc
    Etiquetas = True
    Exit Function

Trata_Erros:
    MsgBox Err.Description, Err.Number
End Function


Private Function ImpDados(Etiquetas() As Long) As Boolean
    On Error GoTo Trata_Erros
    Dim SQL                          As String
    Dim l                               As Long
    
    ImpDados = False
    
    SQL =  Select nome, cidade, telefone From Clientes Where codigo In(   & Etiquetas(1)
    For l = 2 To UBound(Etiquetas)
        SQL = SQL &  ,   & Etiquetas(l)
    Next l
    SQL = SQL &  ) Order By nome
    Set rst  = con.Execute(SQL)
    
    If rst.EOF Then Exit Function
    
    Printer.Font =  Courier New
    Printer.ScaleMode = 6
    rst.MoveFirst
    Do While Not rst.EOF
        If Not ImpFolha(Margem_esquerda, Margem_superior) Then Exit Function
        If Not rst.EOF Then Printer.NewPage
    Loop
    ImpDados = True
    Exit Function
    
Trata_Erros:
    msgbox  Err.Description, Err.Number
End Function


Private Function ImpFolha(MargemEsq As Double, MargemSup As Double) As Boolean
    On Error GoTo Trata_Erros
    Dim Texto                       As String
    Dim i                           As Integer
    Dim j                           As Integer
    Dim CuX                         As Double
    Dim CuY                         As Double
    
    ImpFolha = False
    
    CuX = MargemEsq
    CuY = MargemSup
    
    For i = 1 To Linhas
        For j = 1 To Colunas
            Printer.CurrentY = CuY
            
            Texto = CStr(rst.Fields( nome ))
            imprime Texto, CuX
            
            Texto = CStr(rst.Fields( cidade ))                                            
            imprime Texto, CuX
            
        Texto = CStr(rst.Fields( telefone ))
        imprime Texto, CuX

            CuX = CuX + Largura + Espacamento_vert
            rst.MoveNext
            If rst.EOF Then
                ImpFolha = True
                Exit Function
            End If
        Next j
        
        CuY = CuY + Altura + Espacamento_horz
        CuX = MargemEsq
    Next i
    Printer.Print
    ImpFolha = True
    Exit Function
    
Trata_Erros:
    msgbox Err.Description, Err.Number
End Function


Private Function imprime(str As String, CoX As Double)
    On Error GoTo Trata_Erros

    Printer.CurrentX = CoX
    Printer.FontSize = Largura / 2.9
    Printer.Print str
    Exit Function
    
Trata_Erros:
    msgbox Err.Description, Err.Number
End Function






 Tpico anterior Prximo tpico Novo tpico


Tpico encerrado, respostas no sao permitidas
Encerrado por WEBMASTER em 18/08/2009 10:03:45