CENTRALIZAR IMPRESSAO
AMIGO gostaria de saber como eu faço para centralizar a impressão.
eu uso o objeto printer para imprimir. e eu estou imprimindo um conteudo do listview:
eu faço o seguinte:
O QUE ACONTECE QUANDO ELE IMPRIME ELE ALINHA TUDO A ESQUERDA E EU PRECISO QUE ELE ALINHE OS CAMPOS A DIREITA.
eu uso o objeto printer para imprimir. e eu estou imprimindo um conteudo do listview:
eu faço o seguinte:
Public Sub PrintListView(LV As ListView, Lines%)
Dim i%, LVWidth%, NewTab%, j%
Dim Lista As ListItem
Dim ContaLinha%
'orientação do papel na paisagem
'para imprimir em modo normal retire o vbprorlandscape
'Printer.Orientation = vbPRORLandscape
Printer.Font = "Arial"
Printer.FontSize = "8"
LVWidth = 0
For i = 1 To LV.ColumnHeaders.Count
LVWidth = LVWidth + LV.ColumnHeaders(i).Width
Next
NewTab = 0
'Imprime uma linha de separaçao
Printer.Print
imprime_linha
Printer.Print
'se o nº de linhas do ListView for menor que o de linhas_
'definas para imprimir for menor que o conteúdo, então imprime_
'o total de linhas do relatório.
If Lines > LV.ListItems.Count And Lines <> 0 Then
ContaLinha = Lines
Else
ContaLinha = LV.ListItems.Count
End If
'Imprime os itens e subitens
For i = 1 To ContaLinha
NewTab = 0
Set Lista = LV.ListItems(i)
Printer.Print Lista.Text;
For j = 1 To LV.ColumnHeaders.Count - 1
NewTab = NewTab + CInt(LV.ColumnHeaders(j).Width * Printer.ScaleWidth / LVWidth)
Printer.CurrentX = NewTab
Printer.Print Lista.SubItems(j);
Next
Printer.Print
Next
Printer.EndDoc
End Sub
O QUE ACONTECE QUANDO ELE IMPRIME ELE ALINHA TUDO A ESQUERDA E EU PRECISO QUE ELE ALINHE OS CAMPOS A DIREITA.
você precisa que ele calcule a diferença entre o tamanho da palavra e o tamanho do papel e preencha com espaço antes.
Por exemplo criamos essa sub rotina:
Exemplo de utilização: imprimir palavra teste
Para centralizar seria uma sub rotina assim:
Por exemplo criamos essa sub rotina:
Citação:Public Sub ImprimeDireita(Palavra As String)
Dim nEsp As Long
nEsp = (Printer.ScaleWidth - Printer.TextWidth(Palavra)) \ Printer.TextWidth(" ")
Printer.Print Space(nEsp) & Palavra
End Sub
Exemplo de utilização: imprimir palavra teste
Citação:ImprimeDireita "teste"
Para centralizar seria uma sub rotina assim:
Citação:Public Sub ImprimeCentralizado(Palavra As String)
Dim nEsp As Long
nEsp = (Printer.ScaleWidth - Printer.TextWidth(Palavra)) \ Printer.TextWidth(" ")
Printer.Print Space(nEsp \ 2) & Palavra
End Sub
Segue:
Para realizar o alinhamento central temos que determinar o espaço disponÃÂÂvel e colocar igual quantidade de espaços em ambos os lados do texto a ser impresso. Para isto usamos a propriedade CurrentX e o método TextWidth. A rotina completa é a seguinte;
Pode obter mais informações no:
http://macoratti.net/printer.htm
Para realizar o alinhamento central temos que determinar o espaço disponÃÂÂvel e colocar igual quantidade de espaços em ambos os lados do texto a ser impresso. Para isto usamos a propriedade CurrentX e o método TextWidth. A rotina completa é a seguinte;
Private Sub AlinhaCentro(objSaida As Object, LMarg, TMarg, RgWid, RgHgt _
As Integer, texto As String)
Dim txMarg As Integer
txMarg = (RgWid - objSaida.TextWidth(InptStr)) / 2
If txMarg < 0 Then txMarg = 0
objSaida.CurrentX = LMarg + txMarg
objsaida.CurrentY = TMarg
objSaida.Print texto
End Sub
Pode obter mais informações no:
http://macoratti.net/printer.htm
desculpe mais não entendi onde eu incluio esta rotina.
onde vc precisar imprimeir centralizado vc chama:
AlinhaCentro 'Aqui vc coloca os parametros
AlinhaCentro 'Aqui vc coloca os parametros
Gente como estou com a msm duvida do Guigor ... irei postar aki msm tah?
o meu problema é bem parecido com o dele... estou imprimindo eu uma folha A4, mas pra centralizar todos os textos eu não consigo ... eu costumo usar CurrentX e CurrentY... mas como o usuario q irá decidir o q terá nos textbox eu não sei o q fazer....
Obrigado gente...
o meu problema é bem parecido com o dele... estou imprimindo eu uma folha A4, mas pra centralizar todos os textos eu não consigo ... eu costumo usar CurrentX e CurrentY... mas como o usuario q irá decidir o q terá nos textbox eu não sei o q fazer....
Private Sub cmdImprimir_Click()
Dim Mensagem As String
Mensagem = MsgBox("Tem certeza que deseja imprimir o registro atual?", vbYesNo, "Aviso")
If Mensagem = vbYes Then
Printer.FontName = "Arial"
Printer.FontSize = 14
Printer.FontBold = True
Printer.ForeColor = QBColor(0)
Printer.Orientation = vbPRORPortrait
Printer.PaperSize = vbPRPSA4
Printer.PrintQuality = vbPRPQMedium
Printer.Print Label1.Caption; Spc(10); txtProduto.Text
Printer.Print
Printer.Print Label2.Caption; Spc(10); txtPassada1.Text
Printer.Print
Printer.Print Label3.Caption; Spc(10); txtFormula1.Text
Printer.Print
Printer.Print Label4.Caption; Spc(10); txtPorcentagem1.Text
Printer.Print
Printer.Print Label5.Caption; Spc(10); txtPassada2.Text
Printer.Print
Printer.Print Label6.Caption; Spc(10); txtFormula2.Text
Printer.Print
Printer.Print Label7.Caption; Spc(10); txtPorcentagem2.Text
Printer.Print
Printer.Print Label8.Caption; Spc(10); txtPassada3.Text
Printer.Print
Printer.Print Label9.Caption; Spc(10); txtFormula3.Text
Printer.Print
Printer.Print Label10.Caption; Spc(10); txtPorcentagem3.Text
Printer.Print
Printer.Print Label11.Caption; Spc(10); txtPassada4.Text
Printer.Print
Printer.Print Label12.Caption; Spc(10); txtFormula4.Text
Printer.Print
Printer.Print Label13.Caption; Spc(10); txtPorcentagem4.Text
Printer.EndDoc
End If
End Sub
Obrigado gente...
tenta isso aqui:
Dim srtPassada1 As String * 10 ' variavél para alinha o texto a direita
Printer.Print Label2.Caption; Spc(10); txtPassada1.Text
RSet srtPassada1 = Format(("txtpassada1.text"), "#,##0.00")
Dim srtPassada1 As String * 10 ' variavél para alinha o texto a direita
Printer.Print Label2.Caption; Spc(10); txtPassada1.Text
RSet srtPassada1 = Format(("txtpassada1.text"), "#,##0.00")
Tópico encerrado , respostas não são mais permitidas