Por que impressão come letra?
14/08/2008
Tenho um banco de dados com um campo Alfa com tamanho 70 caracteres.
Tenho o seguinte procedimento dentro de um loop:
Var Texto, Temp : String; I, Linha, Coluna : Integer, IndiceV, IndiceH : Real;
While not eof do
Begin
Texto := Trim(FieldByName(´abcd´).AsString;
Temp := ´´
For I := 1 to 70 do
Temp := Temp + ´.´
Texto := Texto + Temp;
Rect.Left := Coluna;
Rect.Top := Linha;
Rect.Right := Round(375 * IndiceH);
Rect.Bottom := (Rect.Top + TextHeight(Texto) + 1) * Round(IndiceV);
DrawText(Handle,Pchar(Texto),Length(Texto),Rect,DT_WORDBREAK);
Texto := Trim(FieldByName(´efgh´).AsString;
Coluna := Round(380 * IndiceH);
TextOut(Coluna,Linha,Texto);
Linha := Linha + Round(23 * IndiceV);
Next;
End;
Não existe erro de lógica, mas quando mando imprimir uma palavra em determinadas condições o final da frase não aparece.
Ex:
Supondo que eu tenha 2 registros, Casa = Moradia e Cavalo = Animal, se a casa e o cavalo não tiverem um hífen e o gênero
1) Casa.....................Moradia -> assim aparece correto.
Cavalo..................Animal -> também aparece correto.
mas se tiver Casa - masc = Moradia e Cavalo - masc = Animal então aparece tudo errado
2) Casa - masc..........Moradia-> assim na coluna da esquerda o que está depois do ´-´ desaparece, ou seja o masc e os pontos e na linha seguinte desaparece o masc e as linhas aparecem ficando assim
Casa - Moradia (sumiu o masc e os pontos)
Cavalo -......... Animal ( sumiu o masc)
Já dei showmessage e todos os campos aparecem na tela conforme estão cadastrados, já criei um arquivo texto onde também tudo aparece de forma correta.
Alguém sabe me informar o porquê deste desaparecimento de tudo que está depois do hifen?
Posts
Ola Edilcimar, por acaso vc já testou em outra impressora ?
Já vi isso acontecer numa LX-300, substituimos a impressora e foi morro abaixo.
não estou usando uma lx-300 estou usando uma CX4100, mas vou fazer um teste e depois retorno!
Testei com uma LX 300, o problema continua, só que agora nem os pontos da segunda linha ela imprime.
Edilcimar, como a impressão fica em uma impressora Jato de tinta/Laser ?
O meu palpite é impressora, pelo menos de acordo com os testes que vc fez.
Qualquer coisa, padrequevedo@hotmail.com.
Pelo que descobri, o problema não é com a impressora, mas sim o o Delphi em si, com o DrawText(), se eu o substituir por TextOut() o problema acaba, portanto na minha opinião o problema é com a Borland, mas daí até ela assumir o erro já é outra história!
Tenho um banco de dados com um campo Alfa com tamanho 70 caracteres.
Tenho o seguinte procedimento dentro de um loop:
Var Texto, Temp : String; I, Linha, Coluna : Integer, IndiceV, IndiceH : Real;
While not eof do
Begin
Texto := Trim(FieldByName(´abcd´).AsString;
Temp := ´´
For I := 1 to 70 do
Temp := Temp + ´.´
Texto := Texto + Temp;
Rect.Left := Coluna;
Rect.Top := Linha;
Rect.Right := Round(375 * IndiceH);
Rect.Bottom := (Rect.Top + TextHeight(Texto) + 1) * Round(IndiceV);
DrawText(Handle,Pchar(Texto),Length(Texto),Rect,DT_WORDBREAK);
Texto := Trim(FieldByName(´efgh´).AsString;
Coluna := Round(380 * IndiceH);
TextOut(Coluna,Linha,Texto);
Linha := Linha + Round(23 * IndiceV);
Next;
End;
Não existe erro de lógica, mas quando mando imprimir uma palavra em determinadas condições o final da frase não aparece.
Ex:
Supondo que eu tenha 2 registros, Casa = Moradia e Cavalo = Animal, se a casa e o cavalo não tiverem um hífen e o gênero
1) Casa.....................Moradia -> assim aparece correto.
Cavalo..................Animal -> também aparece correto.
mas se tiver Casa - masc = Moradia e Cavalo - masc = Animal então aparece tudo errado
2) Casa - masc..........Moradia-> assim na coluna da esquerda o que está depois do ´-´ desaparece, ou seja o masc e os pontos e na linha seguinte desaparece o masc e as linhas aparecem ficando assim
Casa - Moradia (sumiu o masc e os pontos)
Cavalo -......... Animal ( sumiu o masc)
Já dei showmessage e todos os campos aparecem na tela conforme estão cadastrados, já criei um arquivo texto onde também tudo aparece de forma correta.
Alguém sabe me informar o porquê deste desaparecimento de tudo que está depois do hifen?
Outra possibilidade poderia ser a pagina de codigos da impressora, vc poderia dar uma olhada nela.
A página de códigigo não justifica uma vez que ele só come o que está depois do hifen, e é palavra sem acento, e se eu troco de DrawText() para TextOut() o problema desaparece! Para mim o problema é com o DrawText(), portanto um problema do próprio Delphi 7!
ninguém ainda viu este bug?
25/08/2008
Carlos Bernardo
Opa...
Tenta colocar o sinal de - entre aspas ou apostrofos....
pois a função pode estar tratando o ´ - ´como uma diferença de conjuntos, de maneira inversa ao ´ + ´...
Testa e vê se funciona
T+
Ele não está raciocinando como um sinal de subtração pois se eu escrever
Casa - masc - masc, note que tem 2 ´- masc´ sai
Casa - masc, ou seja come o segundo - masc e mais os pontos!
Eu acho que o problema é com o driver do Windows, pois a função DrawText() [i:f06ca911aa]renderiza[/i:f06ca911aa] a imagem do texto no [i:f06ca911aa]device[/i:f06ca911aa] atribuído. O ideal seria usar a opção DT_NOPREFIX, pois assim a função vai entender que os simbolos não são ´comandos´. O problema não é no Delphi, porque essa são funções que chamam a API do windows, então pode variar de versão do Windows e dependente da localização.
Ok, vou testar e qualquer coisa volto a escrever