PROBLEMAS COM O PRINTER?
Estou tentando imprimir em determinada posição, alguns dados utilizando o Tab(), mas sempre quando vou imprimir a primeira linha que utiliza o tab(), acaba mudando a posição do .CurrentY que configurei. Alguém saberia o motivo disso?
Segue abaixo um trecho do meu código:
[/c]
Segue abaixo um trecho do meu código:
' Não sei se isso tem influência, mas antes de chamar a sub
' para impressão dos dados com Tab(), é imprimido alguns textos
' sem utilizar o Tab(), chamando outra sub:
Printer.FontName = strFName
Printer.FontSize = intFSize
Printer.FontBold = blnFBold
Printer.CurrentY = (sinY * sinMM)
Printer.CurrentX = (sinX * sinMM)
Printer.Print strFrase
...
[c]Private Sub printHeadDados(ByVal sinX As Single, ByVal sinY As Single, ByVal strFName As String, ByVal intFSize As Integer, ByVal blnFBold As Boolean, ByVal bytWhatHead As Byte)
Const sinMM As Single = 567
Printer.FontName = strFName
Printer.FontSize = intFSize
Printer.FontBold = blnFBold
Printer.CurrentY = sinY * sinMM
Printer.CurrentX = sinX * sinMM
Select Case bytWhatHead
Case 1
' 1ê tabela da impressão
Printer.Print Tab(11); "NL";
Printer.Print Tab(19); cIdioma.ReadString("HeadGrid", "hHora");
Printer.Print Tab(28); strHeadDados(0);
Printer.Print Tab(38); strHeadDados(1);
Printer.Print Tab(48); strHeadDados(2);
Printer.Print Tab(59); strHeadDados(3);
Call printLinhaH_V(1.2, sinLineY1_2 + 0.3, 9.05, sinLineY1_2 + 0.3, 0)
...
[/c]
Amigo não sei ce te ajudaria mas...
Tente usar o Spc()
A função Spc(), determina o numero de espaços entre as duas Strings
Pesquisei no forum e encontrei este paragrafo
"Em suma: Tab serve para homogeneizar os espaços entre as colunas de dados. Permite, por exemplo, ao utilizar o objeto Printer, se imprimir em colunas sem usar a propriedade CurrentX."
Como ele cita sem usar a propriedade Current pode ser que haja incompatibilidade talvez.
Tente usar o Spc()
A função Spc(), determina o numero de espaços entre as duas Strings
Pesquisei no forum e encontrei este paragrafo
"Em suma: Tab serve para homogeneizar os espaços entre as colunas de dados. Permite, por exemplo, ao utilizar o objeto Printer, se imprimir em colunas sem usar a propriedade CurrentX."
Como ele cita sem usar a propriedade Current pode ser que haja incompatibilidade talvez.
Troca os TABS por SPACE(nn) colocando a quantidade de espaços entre as variáveis.
Acredito que o Tamanini saiba que pode usar spc() em vez do tab() e tenha razão para não usá-la. Por exemplo se queremos que todos os textos fiquem alinhados em colunas e os dados não tem o mesmo tamanho, vai imprimir "desarrumado". Então o problema não é o Tab().
Verifique se o valor que você definiu é realmente o que você quer usar e veja se isso muda em alguma parte do código. Exemplo:
vê se isso retorna o valor que você quer.Coloca isso no inicio e no fim do código para vê se há mudança após o uso do print.
Vê esse artigo
VÃÅ minha resposta neste tópico se ajuda em algo
Verifique se o valor que você definiu é realmente o que você quer usar e veja se isso muda em alguma parte do código. Exemplo:
msgbox sinY * sinMM
vê se isso retorna o valor que você quer.Coloca isso no inicio e no fim do código para vê se há mudança após o uso do print.
Vê esse artigo
VÃÅ minha resposta neste tópico se ajuda em algo
Robiu,
Sabemos que ele prefere usar o Tab senão a programação dele já estaria com o SPC o que informamos para ele é outra possibilidade.
Caso ele queira selecionar e posicionar nas colunas corretamentes não vejo o problema ele pode verificar o tamanho da palavra que ele vai inserir e adicionar apenas os espaços faltantes com a seguir:
Dim qtd as int
qtd = 40
qtd = qtd - (strHeadDados(0)).lenght 'Isto é apenas um exemplo não da onde é este retorno.
e na hora de printar ele insere o SPC(qtd) vai posicionar na coluna sem problema algum.
Sabemos que ele prefere usar o Tab senão a programação dele já estaria com o SPC o que informamos para ele é outra possibilidade.
Caso ele queira selecionar e posicionar nas colunas corretamentes não vejo o problema ele pode verificar o tamanho da palavra que ele vai inserir e adicionar apenas os espaços faltantes com a seguir:
Dim qtd as int
qtd = 40
qtd = qtd - (strHeadDados(0)).lenght 'Isto é apenas um exemplo não da onde é este retorno.
e na hora de printar ele insere o SPC(qtd) vai posicionar na coluna sem problema algum.
Bem, fiz assim. Retirei apenas o tab(11) da 1ê linha e com isso funcionou.
Será que pode ser pelo fato de eu ter configurado o .CurrentX = 1.2 * 567 e utilizando o Tab(11) na 1ê linha a impressão saia um pouco antes da posição X que configurei e com isso era deslocado para baixo?
Tanto que testei colocando Tab(12) que não deu problema:
Será que pode ser pelo fato de eu ter configurado o .CurrentX = 1.2 * 567 e utilizando o Tab(11) na 1ê linha a impressão saia um pouco antes da posição X que configurei e com isso era deslocado para baixo?
Tanto que testei colocando Tab(12) que não deu problema:
Printer.Print "NL";
Printer.Print Tab(19); cIdioma.ReadString("HeadGrid", "hHora");
Printer.Print Tab(28); strHeadDados(0);
Printer.Print Tab(38); strHeadDados(1);
Printer.Print Tab(48); strHeadDados(2);
Printer.Print Tab(59); strHeadDados(3);
Bem, obrigado pela ajuda pessoal.
Mas o meu problema era o que eu relatei mesmo.
Mas o meu problema era o que eu relatei mesmo.
Tópico encerrado , respostas não são mais permitidas