PRINT PROBLEMA MARGEM DIREITA

USUARIO.EXCLUIDOS 16/09/2006 19:21:58
#171897
Pessoal estou aprendendo a usar o Print.
Já pesquisei no vbmania achei apostilas excelentes, a respeito do print, mas não consegui visualizar a solução do meu problema.
Estou usando o print para imprimir o registro que está na tela, ou seja, o que está prenchido nas text’s, porém tenho uma textbox multiline (inclusive olhei o material disponível no site), mas, em relação a margem Direita eu não estou conseguindo delimita-la.
Meu texto é “cortado” em relação à  margem direita.
Uso BD do access, objeto ADO.
Aqui vai o meu código, se puderem me ajudar desde já agradeço.

Dim Registro, Nome, Data, Endereco, Bairro, Cidade, Estado, CEP, Fone As String
Dim Processo, Fase, Juizado, Vara, Execucao, Acao, Titular, Historico As String

Registro = txtIdCliente.Text
Nome = txtNome.Text
Data = txtData.Text
Endereco = txtEndereco.Text
Bairro = txtBairro.Text
Cidade = txtCidade.Text
Estado = txtEstado.Text
CEP = txtCEP.Text
Fone = txtResidencial.Text
Processo = txtProcesso.Text
Fase = cboFase.Text
Juizado = cboJuizado.Text
Vara = cboVara.Text
Execucao = txtExecucao.Text
Acao = cboAcao.Text
Titular = txtTitular.Text
Historico = txtNotas.Text

'Printer.PrintQuality = vbPRPQDraft
'Printer.Print

'Determina uma distà¢ncia horizontal
Printer.CurrentX = 1.5
'Determina uma distà¢ncia Vertical
Printer.CurrentY = 1.5
Printer.ScaleMode = vbCentimeters
'-------------------Fonte Cabeçalho------------------------I

Printer.FontName = "Arial"
Printer.FontSize = 12
Printer.PaperSize = 9 ' modelo de papel folha = A4
Printer.Orientation = 1 ' Orientação do papel = porta retrato
'------------------------Cabeçalho--------------------I

Printer.Print Tab(35); "Associação dos Ferroviários Sul Riograndenses"
Printer.Print
Printer.Print Tab(45); "Departamento Jurídico";
'Imprimindo Imagem
Printer.PaintPicture Picture1.Picture, 16, 0.5, 2, 2
'------------------------ Retorna Fonte---------------I
Printer.FontName = "Arial"
Printer.FontSize = 8
Printer.Print Tab(112); Format(Now, "long date")
Printer.Print Tab(15); String(110, "_")
'-----------------------------------------------------I

'---------Imprime o Nome dos Campos-------------------I

Printer.Print Tab(15); "Registro: "; Registro; Spc(1);
Printer.Print Tab(30); "Nome: "; Nome
Printer.Print
Printer.Print Tab(15); "Data: "; Data; Spc(1);
Printer.Print Tab(35); "Endereço: "; Endereco; Spc(1);
Printer.Print Tab(92); "Bairro: "; Bairro
Printer.Print
Printer.Print Tab(15); "Cidade: "; Cidade; Spc(1);
Printer.Print Tab(50); "UF: "; Estado; Spc(1);
Printer.Print Tab(60); "CEP: "; CEP; Spc(1);
Printer.Print Tab(80); "Fone: "; Fone

Printer.Print Tab(15); String(110, "_")
Printer.Print
Printer.Print Tab(15); "Processo: "; Processo; Spc(1);
Printer.Print Tab(40); "Fase: "; Fase; Spc(1);
Printer.Print Tab(65); "Juizado: "; Juizado; Spc(1);
Printer.Print Tab(92); "Vara: "; Vara
Printer.Print
Printer.Print Tab(15); "Execução: "; Execucao; Spc(1);
Printer.Print Tab(40); "Ação: "; Acao; Spc(1);
Printer.Print Tab(80); "Titular: "; Titular
Printer.Print Tab(15); String(110, "_")

Printer.Print Tab(15); "Histórico: "
'Margem esquerda
Printer.ScaleLeft = -1.8
---- Essa é a text Multiline problemática em relação a margem Direita
Printer.Print Tab(15); Historico

If Printer.CurrentX + Printer.TextWidth(Historico) > Printer.ScaleWidth Then
'Area de impressão mais larga que a folha
End If

If Printer.CurrentY + Printer.TextHeight(Historico) > Printer.ScaleHeight Then
Printer.NewPage
Printer.Print

End If
Printer.EndDoc

End Sub

USUARIO.EXCLUIDOS 16/09/2006 19:56:10
#171902
As Arrobas alinham a direita.

On Error GoTo erros
RSCaixaFechamento.Open "SELECT *From CaixaFechamento Where NArq='" & Label1 & "';", Conexao, 3, 3
Dim ClienteINI As String
NArq = Format(Now, "dd/mm/yy") & Format(Now, "hh:mm:ss")
NArq = Replace(NArq, "/", "")
NArq = Replace(NArq, ":", "")
ClienteINI = ReadINI("NomeCliente", "Cliente", App.Path & "\NCS.ini") 'Define o cliente que esta no arquivo ncs.ini
'Dim VendaDia As Currency
'VendaDia = sistema - VLRAB
'Open "C:\" & NArq & ".txt" For Output As #1
'Open "C:\Fechamento.doc" For Output As #1
Open "" & Dialog1.FileName & " " For Output As #1
Print #1, Chr(27) & Chr(15)
Print #1, ClienteINI
Print #1, "FECHAMENTO DETALHADO DE CAIXA"
Print #1, "Data Mov: "; RSCaixaFechamento!data; " Data Fechamento: "; RSCaixaFechamento!Hora
Print #1, "Operador: "; RSCaixaFechamento!Operador; " - Máquina: "; RSCaixaFechamento!GetName
Print #1, "";
Print #1, "*VLR DE ABERTURA*: "; Format(FormatNumber(RSCaixaFechamento!Abertura, 2), "@@@@@@@@@@@") 'ACULULADO
Print #1, ""
Print #1, "*RECEBIMENTO*"
Print #1, "DINHEIRO: "; Format(FormatNumber(RSCaixaFechamento!DinheiroRecebido, 2), "@@@@@@@@@@@")
Print #1, "CHEQUE: "; Format(FormatNumber(RSCaixaFechamento!ChequesRecebido, 2), "@@@@@@@@@@@")
Print #1, "CARTOES: "; Format(FormatNumber(RSCaixaFechamento!CartoesRecebido, 2), "@@@@@@@@@@@")
Print #1, "TOT REC: "; Format(FormatNumber(RSCaixaFechamento!VLRAtual, 2), "@@@@@@@@@@@") 'ACULULADO
Print #1, "TOT REC + ABERT: "; Format(FormatNumber(RSCaixaFechamento!TotalRecebidoAB, 2), "@@@@@@@@@@@") 'ACULULADO

Print #1, ""
Print #1, "*DETALHES DE RECEBIMENTO*"
Print #1, "LOJA: "; Format(FormatNumber(RSCaixaFechamento!Loja, 2), "@@@@@@@@@@@")
Print #1, "SERVICOS: "; Format(FormatNumber(RSCaixaFechamento!Servicos, 2), "@@@@@@@@@@@")
Print #1, "VETERINARIA: "; Format(FormatNumber(RSCaixaFechamento!Veterinaria, 2), "@@@@@@@@@@@")
Print #1, "CONTA: "; Format(FormatNumber(RSCaixaFechamento!FiadoRecebido, 2), "@@@@@@@@@@@")
Print #1, ""
Print #1, "*DECLARADOS*"
Print #1, "DINHEIRO DECLARADO:"; Format(FormatNumber(RSCaixaFechamento!DinheiroDeclarado, 2), "@@@@@@@@@@@")
Print #1, "CHEQUE DECLARADO: "; Format(FormatNumber(RSCaixaFechamento!ChequesDeclarado, 2), "@@@@@@@@@@@")
Print #1, "CARTOES DECLARADO: "; Format(FormatNumber(RSCaixaFechamento!CartoesDeclarado, 2), "@@@@@@@@@@@")
Print #1, ""
Print #1, "*RETIRADAS*"
Print #1, "DESPESAS DIVERSAS: "; Format(FormatNumber(RSCaixaFechamento!FichasDeclarado, 2), "@@@@@@@@@@@")
RSDespesas.Open "Select *from Despesas Where NArq='" & RSCaixaFechamento!NArq & "';", Conexao, 3, 3
While Not RSDespesas.EOF
'Print #1, "VLR: "; Format(FormatNumber(RSDespesas!Valor, 2), "@@@@@@@@@@@"); "DESCRICAO: "; RSDespesas!Valor
Print #1, FormatNumber(RSDespesas!Valor, 2); " - "; Left(RSDespesas!Descricao, 22)
RSDespesas.MoveNext
Wend
RSDespesas.Close
Set RSDespesas = Nothing
Print #1, ""
Print #1, "SANGRIA: "; Format(FormatNumber(RSCaixaFechamento!Sangria, 2), "@@@@@@@@@@@")
RSSangria.Open "Select *from Sangria Where NArq='" & RSCaixaFechamento!NArq & "';", Conexao, 3, 3
While Not RSSangria.EOF
'Print #1, "VLR: "; Format(FormatNumber(RSDespesas!Valor, 2), "@@@@@@@@@@@"); "DESCRICAO: "; RSDespesas!Valor
If RSSangria!Estorno = True Then
Print #1, "Est: "; FormatNumber(RSSangria!Valor, 2); " - US:"; RSSangria!Usuario; " - "; Left(RSSangria!Hora, 5)
Else
Print #1, FormatNumber(RSSangria!Valor, 2); " - US:"; RSSangria!Usuario; " - "; Left(RSSangria!Hora, 5)
End If
RSSangria.MoveNext
Wend
RSSangria.Close
Set RSSangria = Nothing
Print #1, ""
Print #1, "*******************"

If Left(RSCaixaFechamento!VlrDiferenca, 1) = "-" Then
Print #1, "*DIFERENCA:*"; Format(FormatNumber(RSCaixaFechamento!VlrDiferenca, 2), "@@@@@@@@@@@"); " FALTA"
ElseIf Left(RSCaixaFechamento!VlrDiferenca, 1) = "0" Then
Print #1, "*DIFERENCA:*"; Format(FormatNumber(RSCaixaFechamento!VlrDiferenca, 2), "@@@@@@@@@@@")
Else
Print #1, "*DIFERENCA:*"; Format(FormatNumber(RSCaixaFechamento!VlrDiferenca, 2), "@@@@@@@@@@@"); " SOBRA"
End If
Print #1, ""
Print #1, "*VENDA CONTA:* "; FormatNumber(RSCaixaFechamento!Fiado, 2) 'FIADO
Print #1, ""
Print #1, ""
Print #1, ""
Print #1, ""
Close #1
RSCaixaFechamento.Close
Set RSCaixaFechamento = Nothing
erros:
If Err Then
MSGERROS
End If
End Sub

USUARIO.EXCLUIDOS 16/09/2006 20:57:05
#171904
Machado,

Primeiro, qual a impressora q vc esta imprimindo (jato de tinta, matricial ou laser)? Dependeno de qual pode ter diferença na impressão devido ao caracter que esta como padrão na impressora. Falo isso porque uso um programa feito em clipper e ao imprimir em certa impressoras ele não consegue imprimir as 80 colunas (que são o padrão das matriciais)

Tenho como sugestão, para seu codigo ficar mais limpo, usar a seguinte maneira de escrever uma linha impressa:
Saida.Print Tab(40); "Total Peças ............ "; Tab(65); Format$(Format$(mrsOrcamento!valorpecas, "currency"), "@@@@@@@@@@@@")

Assim fica todo os campos impressos na mesma linha.


USUARIO.EXCLUIDOS 16/09/2006 21:14:15
#171908
Valeu Pessoal, mas não sei se me fiz entender, a margem Direita a que me refiro é da página. A minha impressora é jato de tinta Epsonc45. E o que Eu estou tentando imprimir é a ficha de um cliente somente, o que está aberto na tela.
Porém o último campo Chamado (Histórico) txtNotas.text, que funciona como o próprio nome já diz: um Histórico de notas de expedientes forenses, oqual geralmente escreve-se bastante. Eu coloquei como um memo (multiline), assim como esse que escrevemos para responder, porém a linha em que eu não dou enter (Dentro da textbox) o Print não está delimitando dentro da folha A4 (o texto fica cortado).
Mas desde já agradeço a atenção.
USUARIO.EXCLUIDOS 16/09/2006 21:26:07
#171910
Resposta escolhida
Machado,

Agora entendi, na verdade ele não quebra a linha do seu texto.
Veja se a função abaixo te ajuda.

Function QuebraLinhas(TextoaQuebrar As String, Optional Tamanho As Integer)
Dim QtdeLinhas As Integer
Dim X As Integer
Dim TextoQuebrado As String
Dim TextoOriginal As String

TextoOriginal = TextoaQuebrar
QtdeLinhas = 0

If Tamanho = 0 Then Tamanho = 80

If TextoaQuebrar <> "" Then
If Len(TextoaQuebrar) > Tamanho Then
Do While Len(TextoaQuebrar) > Tamanho
If InStr(1, TextoaQuebrar, vbCrLf) <> 0 And InStr(1, TextoaQuebrar, vbCrLf) + 1 < Len(TextoaQuebrar) Then
'Quebra aonde tem um enter
X = InStr(1, TextoaQuebrar, vbCrLf)

Else
'Procura espaco perto do tamanho
X = InStr(1, TextoaQuebrar, " ")
If X > Tamanho Then
X = Tamanho
Else
Dim Z As Integer
Dim Y As Integer ' Ultima localizacao do espaco
Dim ProcuraMaximo As Boolean ' Sim ou Não se o maximo foi encontradi
Do While True
X = InStr(X, TextoaQuebrar, " ")
Z = X
Y = InStr(X + 1, TextoaQuebrar, " ")
If Y > Tamanho Or Y = 0 Then
X = Z
Exit Do
Else
Z = X
End If
X = Y

Loop
End If
End If
QtdeLinhas = QtdeLinhas + 1
' TextoQuebrado = TextoQuebrado + Mid(TextoaQuebrar, 1, X - 1) + " / "
If QtdeLinhas > 1 Then
If Tamanho <> 80 Then
TextoQuebrado = TextoQuebrado + Space(80 - Tamanho) + Mid(TextoaQuebrar, 1, X - 1) + vbCrLf
Else
TextoQuebrado = TextoQuebrado + Mid(TextoaQuebrar, 1, X - 1) + vbCrLf
End If
Else
TextoQuebrado = TextoQuebrado + Mid(TextoaQuebrar, 1, X - 1) + vbCrLf
End If
TextoaQuebrar = Mid(TextoaQuebrar, X + 1)
'debug.print X
'debug.print TextoQuebrado
Loop
If Tamanho <> 80 Then
TextoQuebrado = TextoQuebrado + Space(80 - Tamanho) + TextoaQuebrar
Else
TextoQuebrado = TextoQuebrado + TextoaQuebrar
End If

If Len(TextoOriginal) > Tamanho Or QtdeLinhas > 3 Then
QuebraLinhas = TextoQuebrado
Else
QuebraLinhas = TextoOriginal
End If
Else
QuebraLinhas = TextoOriginal
End If
Else
QuebraLinhas = TextoOriginal
End If
End Function




VB6MASTER 17/09/2006 09:58:30
#171957
Citação:

Chamado (Histórico) txtNotas.text


Ja experimentou trocar o TextBox por um RichTextBox, cabe muito + informações e tem opções de formatação. [Project -> Component -> Microsoft Rich Textbox)
USUARIO.EXCLUIDOS 17/09/2006 14:47:19
#172005
Valeu pessoal ! Finalmente consegui! Agradeço A TODOS! NIL,MEMLUZ E VB6MASTER pela atenção enfim o tempo que desprenderam com este que vos escreve.
Mas vai um especial Abraço ao MEMLUZ que graças ao seu código me tirou do sufoco. Pessoal Muito Obrigado de Verdade!
A obrigado pelo toque VB6MASTER vou começar a usar as rich textbox
Valeu!!!!!!!!!!!!!!! intém o próximo tópico.[S20][S87]
Tópico encerrado , respostas não são mais permitidas