Alinhamento com Write e WriteLN em matriciais ?

Delphi

01/10/2007

Bom dia , pessoal do forum.

Estou com um problema para imprimir em impressora matricial
( DARUMA NAO FISCAL )

OBS: com o componente VDO PRINTER eu consigo normal, mas tem hora q quando mando imprimir sai um monte de caracteres nao a ver. ( axo q eh o driver pq nao tenho como instalar esta impressora ( alguem sabe como ?).

Mas para imprimir com WRITE/WRITELN sae normal tb , mas porem nao consigo fazer o alinhamento da impressora ?

EXEMPLO :


CODIGO PRODUTO VALOR
00001 COMPUTAOR P4 1.200,00
00002 MOUSE PS/2 24,00


GOSTARIA Q SAISSE IGUAL O EXEMPLO ACIMA E ESTA SAINDO DESTA FORMA :

CODIGO PRODUTO VALOR
00001 COMPUTAOR P4 1.200,00
00002 MOUSE PS/2 24,00

ALGUEM TEM ALGUMA SOLUCAO PARA ESTE PROBLEMA ?
ESTOU USANDO DELPHI7/INTERBASE.


Walter Faria

Walter Faria

Curtidas 0

Respostas

Ffabiop

Ffabiop

01/10/2007

Bom dia!
Na matricial o alinhamento se dá por meio de caracteres por exemplo:
var
linha, aux: String;
begin
  aux := ´1´; //Codigo do Produto
  while length(aux)<5 do
    aux := ´0´+aux;
  Linha := Aux;

  aux := ´COMPUTADOR P4´; //Descricao do Produto
  while length(aux)<15 do
    aux := aux+´ ´;
  Linha := Linha +Aux;

  aux := ´1.200,00´; //Valor do Produto
  while length(aux)<10 do
    aux := ´ ´+aux;
  Linha := Linha +Aux;
  Writeln(´Linha´); //Manda toada a linha de uma vez só para aimpressora
end;


Vai adicionando, espaços em branco ou zeros nos campos para alinhar, e acumula a linha toda para mandar de uma vez só para a impressora, nada de mandar cada campo pra impressora, isso acaba com a velocidade de impressão.


GOSTEI 0
Paulo

Paulo

01/10/2007

Eis aí tres funções: Ajustar Numeros, Textos e evitar caracteres estranhos na matricial, pois quando não há driver de impressão, ela pega o default dela, que é o inglês(sem acentos, cedilhas e etc...)

function
TFrmMenu.AjustaNum(str : string; tam: integer) : string; begin while length( str ) tam do str := ´ ´ + str; if length(str) > tam then str := copy(str, 1, tam); result := str; end; function TFrmMenu.AjustaStr( str : string; tam: integer) : string; begin while length( str ) tam do str := str + ´ ´; if length(str) > tam then str := copy(str, 1, tam); result := str; end; function TFrmMenu.AnsiToAscii(str : string) : String; var i : Integer; begin for i := 1 to length(str) do case str[i] of ´á´ : str[i] := ´a´; ´é´ : str[i] := ´e´; ´í´ : str[i] := ´i´; ´ó´ : str[i] := ´o´; ´ú´ : str[i] := ´u´; ´à´ : str[i] := ´a´; ´è´ : str[i] := ´e´; ´ì´ : str[i] := ´i´; ´ò´ : str[i] := ´o´; ´ù´ : str[i] := ´u´; ´â´ : str[i] := ´a´; ´ê´ : str[i] := ´e´; ´î´ : str[i] := ´i´; ´ô´ : str[i] := ´o´; ´û´ : str[i] := ´u´; ´ä´ : str[i] := ´a´; ´ë´ : str[i] := ´e´; ´ï´ : str[i] := ´i´; ´ö´ : str[i] := ´o´; ´ü´ : str[i] := ´u´; ´ã´ : str[i] := ´a´; ´õ´ : str[i] := ´o´; ´ñ´ : str[i] := ´n´; ´ç´ : str[i] := ´c´; ´Á´ : str[i] := ´A´; ´É´ : str[i] := ´E´; ´Í´ : str[i] := ´I´; ´Ó´ : str[i] := ´O´; ´Ú´ : str[i] := ´U´; ´À´ : str[i] := ´A´; ´È´ : str[i] := ´E´; ´Ì´ : str[i] := ´I´; ´Ò´ : str[i] := ´O´; ´Ù´ : str[i] := ´U´; ´Â´ : str[i] := ´A´; ´Ê´ : str[i] := ´E´; ´Î´ : str[i] := ´I´; ´Ô´ : str[i] := ´O´; ´Û´ : str[i] := ´U´; ´Ä´ : str[i] := ´A´; ´Ë´ : str[i] := ´E´; ´Ï´ : str[i] := ´I´; ´Ö´ : str[i] := ´O´; ´Ü´ : str[i] := ´U´; ´Ã´ : str[i] := ´A´; ´Õ´ : str[i] := ´O´; ´Ñ´ : str[i] := ´N´; ´Ç´ : str[i] := ´C´; ´º´ : str[i] := ´.´; end; Result := Str; end;



Como usá-las:

Write( Texto, AjustaStr(NDoc,8)); Write( Texto, AjustaStr(Emis,12)); Write( Texto, AjustaStr(Venc,12)); //Antes de imprimir ele retira os acentos Write( Texto, AnsiToAscii(AjustaStr(Desc,12))); Write( Texto, AjustaNum(ValU,12)); Write( Texto, AjustaNum(Dias,10)); Write( Texto, AjustaNum(ValCor,11)); Writeln( Texto, ´´);


Espero tê-lo ajudado, boa sorte.


GOSTEI 0
POSTAR