PROBLEMAS COM O PRINTER?

TAMANINI 05/09/2007 08:19:54
#234176
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:
' 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]
USUARIO.EXCLUIDOS 05/09/2007 11:40:46
#234241
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.
USUARIO.EXCLUIDOS 05/09/2007 11:40:49
#234242
Troca os TABS por SPACE(nn) colocando a quantidade de espaços entre as variáveis.
ROBIU 05/09/2007 14:13:51
#234289
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:
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



USUARIO.EXCLUIDOS 05/09/2007 14:18:46
#234291
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.
TAMANINI 05/09/2007 14:42:45
#234296
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:
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);

TAMANINI 05/09/2007 17:53:30
#234353
Bem, obrigado pela ajuda pessoal.
Mas o meu problema era o que eu relatei mesmo.
Tópico encerrado , respostas não são mais permitidas