COMO LIMITAR IMPRESSAO NA LX300 COM VB6

STEWARTCINTRA 08/06/2010 18:27:30
#344291
estou precisando urgente da ajuda de voce, e porque estou desenvolvendo um programinha para um cartorio de minha cidade e estou precisando imprimir em uma impressora matricial etiquetas, ate ai tudo bem...

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
RICATOM 08/06/2010 20:29:32
#344294
Começe dando uma lida nas regras do forum, principalmente sobre [Ô]Títulos incorretos[Ô].

http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=regras
LIZANDER 08/06/2010 20:49:25
#344295
Resposta escolhida
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.

STEWARTCINTRA 08/06/2010 22:04:13
#344298
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
MSMJUDAS 09/06/2010 11:33:02
#344342
Um exemplo de impressão de etiquetas:

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
Tópico encerrado , respostas não são mais permitidas