COMO LIMITAR IMPRESSAO NA LX300 COM VB6
queria saber como fazer pra imprimir em um determinado tamanho, para a impressora naum ultrapassar o limite da etiqueta e continuar na linha de baixo...
a impressora que estou usando e uma expson lx300 e usso o codigo que manda direto pra porta lpt1, akguem sabe como fazer isso...
por favor ajudem ai eh urgente
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=regras
Com relação a imprimir via lpt1 é muito fácil e vc vai ter que usar o objeto Printer para isso vc vai fazer assim:
PrnFile = FreeFile
cPorta = [Ô]LPT1:[Ô]
Open cPorta For Output As PrnFile
Daà vc imprime com
Print #PrnFile, [Ô]o que vc quer imprimir...[Ô]
Com relação a não passar para outra etiqueta, vc vai ter que ver quantos caracteres cabem em cada etiqueta e regular sua impressão pela quantidade de caracteres em cada linha.
As impressões nativas (LPT1), cada caractere ocupa o mesmo espaço, então fica fácil. Porém, cada conjunto de tipos de caracteres (expandido, normal, condensado, etc.) podem ocupar tamanhos diferentes, então a quantidade de caracteres por etiqueta dependerá de:
1 - O tamanho da etiqueta
2 - O tipo de caracter que vc irá utilizar.
A titulo de observação... não se esqueça de setar, na impressora, a tabela de caracteres para ANSI ou BRASCII, senão os caracteres acentuados sairão incorretos.
Se ainda permanecer dúvida, poste.
Citação::
Vamos lá...
Com relação a imprimir via lpt1 é muito fácil e vc vai ter que usar o objeto Printer para isso vc vai fazer assim:
PrnFile = FreeFile
cPorta = [Ô]LPT1:[Ô]
Open cPorta For Output As PrnFile
Daà vc imprime com
Print #PrnFile, [Ô]o que vc quer imprimir...[Ô]
Com relação a não passar para outra etiqueta, vc vai ter que ver quantos caracteres cabem em cada etiqueta e regular sua impressão pela quantidade de caracteres em cada linha.
As impressões nativas (LPT1), cada caractere ocupa o mesmo espaço, então fica fácil. Porém, cada conjunto de tipos de caracteres (expandido, normal, condensado, etc.) podem ocupar tamanhos diferentes, então a quantidade de caracteres por etiqueta dependerá de:
1 - O tamanho da etiqueta
2 - O tipo de caracter que vc irá utilizar.
A titulo de observação... não se esqueça de setar, na impressora, a tabela de caracteres para ANSI ou BRASCII, senão os caracteres acentuados sairão incorretos.
Se ainda permanecer dúvida, poste.
amigo poderia me ajudar cara fazendo um pequeno exemplo limitando caracteres e como definir o tipo de caractere e tbm como setar na impressora pra ela imprimir os acentos...
eu ate estou usando aqui o codigo de mandar direito pra lpt1 mais naum sei como fazer esses codigos de limitar caracteres e o tamanho e sobre acentos tbm
desde jah agradeco sua atenca, se puder me ajudar novamente
Public Sub Etiquetas_Fornecedor()
Dim x As Printer
For Each x In Printers
If x.DeviceName = [Ô]Epson LX-300+[Ô] Then
Set Printer = x
ElseIf x.DeviceName = [Ô]Epson LX-300[Ô] Then
Set Printer = x
End If
Next
vLinha = 0
Printer.ScaleMode = vbMillimeters
Printer.FontSize = 8
RsDados.Open [Ô]SELECT * FROM FORNECEDOR[Ô], Conn, adOpenKeyset, adLockReadOnly
While Not RsDados.EOF Then
Printer.CurrentX = 3
Printer.CurrentY = 3 + vLinha
Printer.Print [Ô]Razão Social: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_RAZAO[Ô])), Mid(RsDados([Ô]FOR_RAZAO[Ô]), 1, 40), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 6 + vLinha
Printer.Print [Ô]Nome Fantasia: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_FANTASIA[Ô])), Mid(RsDados([Ô]FOR_FANTASIA[Ô]), 1, 30), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 9 + vLinha
Printer.Print [Ô]CNPJ/CPF: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_CPFCNPJ[Ô])), RsDados([Ô]FOR_CPFCNPJ[Ô]), [Ô][Ô])
Printer.CurrentX = 55
Printer.CurrentY = 9 + vLinha
Printer.Print [Ô]IE: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_IERG[Ô])), RsDados([Ô]FOR_IERG[Ô]), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 12 + vLinha
Printer.Print [Ô]Endereço: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_ENDERECO[Ô])), RsDados([Ô]FOR_ENDERECO[Ô]), [Ô][Ô]) & [Ô] - [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_BAIRRO[Ô])), RsDados([Ô]FOR_BAIRRO[Ô]), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 15 + vLinha
Printer.Print [Ô]Cidade/UF: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_CIDADE[Ô])), RsDados([Ô]FOR_CIDADE[Ô]), [Ô][Ô]) & [Ô] - [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_UF[Ô])), RsDados([Ô]FOR_UF[Ô]), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 18 + vLinha
Printer.Print [Ô]Cep: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_CEP[Ô])), Format(RsDados([Ô]FOR_CEP[Ô]), [Ô]00000-000[Ô]), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 21 + vLinha
Printer.Print [Ô]Telefone: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_FONE[Ô])), RsDados([Ô]FOR_FONE[Ô]), [Ô][Ô]) & Space(15) & [Ô]Fax: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_FAX[Ô])), RsDados([Ô]FOR_FAX[Ô]), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 24 + vLinha
Printer.Print [Ô]E-mail: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_EMAIL[Ô])), LCase(RsDados([Ô]FOR_EMAIL[Ô])), [Ô][Ô])
Printer.CurrentX = 3
Printer.CurrentY = 27 + vLinha
Printer.Print [Ô]Site: [Ô] & IIf(Not IsNull(RsDados([Ô]FOR_SITE[Ô])), LCase(RsDados([Ô]FOR_SITE[Ô])), [Ô][Ô])
RsDados.MoveNext
vLinha = vLinha + 38
Wend
RsDados.Close: Set RsDados = Nothing
Printer.EndDoc
End Sub