ALIGNMENT NO OBJETO PRINTER
Boa Tarde
Num dos reláorios do meu projeto uso Objeto Printer e tá muito bom, só não to conseguindo alinhar as colunas de alguns dados que vem de uma msFlexGrid.
Por default vem alinhado a esquerda e do jeito que consegui, depois de muita pesquisa, alinha ao centro, mas eu quero alinnhar a direita.
Vem assim tá assim Quero assim
1.00 1,00 1,00
10,00 10,00 10,00
100,00 100,00 100,00
1.000,00 1.000,00 1.000,00
Na sub atual, que centraliza a coluna, faço assim:
picRel.Print Tab(0); String(195, [Ô]-[Ô])
With rsConsertos2
Do Until .EOF = True
picRel.Print Tab(3); Format(!Item, [Ô]000[Ô]);
picRel.Print Tab(10); !CodPec;
picRel.Print Tab(18); !NomePeca;
picRel.Print Tab(73); Format$(Format$(!Quant, [Ô]0.000[Ô]), [Ô]@@@@@@@@@[Ô]);
picRel.Print Tab(90); Format$(Format$(!valor, [Ô]#,##0.00[Ô]), [Ô]@@@@@@@@@[Ô]);
picRel.Print Tab(105); Format$(Format$(!TotLin, [Ô]#,##0.00[Ô]), [Ô]@@@@@@@@@[Ô]);
picRel.FontName = [Ô]Tahoma[Ô]
.MoveNext
Loop
End With
picRel.Print Tab(0); String(195, [Ô]-[Ô])
Se alguem puder me ajudar, agradeço.
Nereu
Num dos reláorios do meu projeto uso Objeto Printer e tá muito bom, só não to conseguindo alinhar as colunas de alguns dados que vem de uma msFlexGrid.
Por default vem alinhado a esquerda e do jeito que consegui, depois de muita pesquisa, alinha ao centro, mas eu quero alinnhar a direita.
Vem assim tá assim Quero assim
1.00 1,00 1,00
10,00 10,00 10,00
100,00 100,00 100,00
1.000,00 1.000,00 1.000,00
Na sub atual, que centraliza a coluna, faço assim:
picRel.Print Tab(0); String(195, [Ô]-[Ô])
With rsConsertos2
Do Until .EOF = True
picRel.Print Tab(3); Format(!Item, [Ô]000[Ô]);
picRel.Print Tab(10); !CodPec;
picRel.Print Tab(18); !NomePeca;
picRel.Print Tab(73); Format$(Format$(!Quant, [Ô]0.000[Ô]), [Ô]@@@@@@@@@[Ô]);
picRel.Print Tab(90); Format$(Format$(!valor, [Ô]#,##0.00[Ô]), [Ô]@@@@@@@@@[Ô]);
picRel.Print Tab(105); Format$(Format$(!TotLin, [Ô]#,##0.00[Ô]), [Ô]@@@@@@@@@[Ô]);
picRel.FontName = [Ô]Tahoma[Ô]
.MoveNext
Loop
End With
picRel.Print Tab(0); String(195, [Ô]-[Ô])
Se alguem puder me ajudar, agradeço.
Nereu
Nereu eu faço assim
Dim qtdColunas as integer
Dim tamanhoTexto as integer
qtdColunas = 20
tamanhoTexto = len(Texto)
Print #1 Tab(qtdColunas - tamanhoTexto) Texto;
Espero que ajude..
Att,
Dim qtdColunas as integer
Dim tamanhoTexto as integer
qtdColunas = 20
tamanhoTexto = len(Texto)
Print #1 Tab(qtdColunas - tamanhoTexto) Texto;
Espero que ajude..
Att,
Citação:IRRV escreveu:
Nereu eu faço assim
Dim qtdColunas as integer
Dim tamanhoTexto as integer
qtdColunas = 20
tamanhoTexto = len(Texto)
Print #1 Tab(qtdColunas - tamanhoTexto) Texto;
Espero que ajude..
Att,
Um pequeno comentário sobre esta solução. Está correta se os caracteres tiverem o mesmo [Ô]tamanho[Ô].
A forma correta de obter QUALQUER tamanho é utilizar o TEXTWIDTH. Adaptando o código do IRRV:
Dim qtdColunas as integer
Dim tamanhoTexto as integer
qtdColunas = 2000 [ô]posição onde deve ficar o alinhamento A DIREITA
tamanhoTexto = picrel.textwidth(Texto) [ô]descubro o tamanho do texto na resolução da impressão
Print #1 Tab(qtdColunas - tamanhoTexto) Texto;
Boa Noite
Obrigado IRRV e Edermir.
Fiz algumas tentativas com a idéia de voces, mas retorna erro de compilação.
Com certeza não estou sabendo usar a idéia.
Por exemplo se eu quizer alinhar a coluna Quant como ficaria, porque eu antes de alinhar preciso informar que aquela coluna tá no TAB (73) ???
Nereu
Obrigado IRRV e Edermir.
Fiz algumas tentativas com a idéia de voces, mas retorna erro de compilação.
Com certeza não estou sabendo usar a idéia.
Por exemplo se eu quizer alinhar a coluna Quant como ficaria, porque eu antes de alinhar preciso informar que aquela coluna tá no TAB (73) ???
Nereu
O importante é saber a COLUNA onde será o alinhamento a direita.
qtdColunas = 2000 [ô]posição onde deve ficar o alinhamento A DIREITA
Wtexto = Format$(Format$(!Quant, [Ô]0.000[Ô]), [Ô]@@@@@@@@@[Ô])
tamanhoTexto = picrel.textwidth(Wtexto) [ô]descubro o tamanho do texto na resolução da impressão
Print #1 Tab(qtdColunas - tamanhoTexto); Wtexto;
Vou ser sincero, não utilizo o TAB. Utilizo o CURRENTX. Então o código ficaria assim:
qtdColunas = 2000 [ô]posição onde deve ficar o alinhamento A DIREITA
Wtexto = Format(!Quant, [Ô]0.000[Ô])
tamanhoTexto = picrel.textwidth(Wtexto) [ô]descubro o tamanho do texto na resolução da impressão
picrel.currenty = picrel.currenty + 200 [ô]pular 200 espaços entre as linhas
picrel.currentx = (qtdColunas - tamanhoTexto) [ô]coluna para iniciar a impressão do número
picrel.print Wtexto;
Edermir
Ficou do jeito que eu queria. O problema que ele perdeu o formato mas isso eu conserto.
ficou assim
With rsConsertos1
Do Until .EOF = True
picRel.Print Tab(3); Format(!Item, [Ô]000[Ô]);
picRel.Print Tab(10); !CodPeca;
picRel.Print Tab(18); !NomePeca;
qtdColunas = 5800 [ô]posição onde deve ficar o alinhamento A DIREITA
Wtexto = Format(!Quant, [Ô]0.000[Ô])
tamanhoTexto = picRel.TextWidth(Wtexto) [ô]descubro o tamanho do texto na resolução da impressão
picRel.CurrentX = (qtdColunas - tamanhoTexto) [ô]coluna para iniciar a impressão do número
picRel.Print Wtexto;
qtdColunas = 7000
Wtexto = Format(!valor, [Ô]#,##0.00[Ô])
tamanhoTexto = picRel.TextWidth(Wtexto)
picRel.CurrentX = (qtdColunas - tamanhoTexto)
picRel.Print Wtexto;
qtdColunas = 8000
Wtexto = Format(!TotLinha, [Ô]#,##0.00[Ô])
tamanhoTexto = picRel.TextWidth(Wtexto)
picRel.CurrentX = (qtdColunas - tamanhoTexto)
picRel.Print Wtexto;
picRel.FontName = [Ô]Tahoma[Ô]
.MoveNext
Loop
End With
Muito Obrigado, devo essa.
Nereu
Ficou do jeito que eu queria. O problema que ele perdeu o formato mas isso eu conserto.
ficou assim
With rsConsertos1
Do Until .EOF = True
picRel.Print Tab(3); Format(!Item, [Ô]000[Ô]);
picRel.Print Tab(10); !CodPeca;
picRel.Print Tab(18); !NomePeca;
qtdColunas = 5800 [ô]posição onde deve ficar o alinhamento A DIREITA
Wtexto = Format(!Quant, [Ô]0.000[Ô])
tamanhoTexto = picRel.TextWidth(Wtexto) [ô]descubro o tamanho do texto na resolução da impressão
picRel.CurrentX = (qtdColunas - tamanhoTexto) [ô]coluna para iniciar a impressão do número
picRel.Print Wtexto;
qtdColunas = 7000
Wtexto = Format(!valor, [Ô]#,##0.00[Ô])
tamanhoTexto = picRel.TextWidth(Wtexto)
picRel.CurrentX = (qtdColunas - tamanhoTexto)
picRel.Print Wtexto;
qtdColunas = 8000
Wtexto = Format(!TotLinha, [Ô]#,##0.00[Ô])
tamanhoTexto = picRel.TextWidth(Wtexto)
picRel.CurrentX = (qtdColunas - tamanhoTexto)
picRel.Print Wtexto;
picRel.FontName = [Ô]Tahoma[Ô]
.MoveNext
Loop
End With
Muito Obrigado, devo essa.
Nereu
arrumei o problema do formato
essa linha
picRel.Print Wtexto;
fica assim
picRel.Print Format(!TotLinha, [Ô]###0.00[Ô]);
agora ficou 10, blz
muito obrigado
Nereu
essa linha
picRel.Print Wtexto;
fica assim
picRel.Print Format(!TotLinha, [Ô]###0.00[Ô]);
agora ficou 10, blz
muito obrigado
Nereu
Tópico encerrado , respostas não são mais permitidas