Problema com alinhamento no VDOPrint
Olá a todos!
Estou tentando fazer a impressão dos cupons não fiscais, porém estou com um problema na hora de posicionar os elementos no papel.
Quando utilizo a propriedade Font.Align do VDOPrinter e alinho o elemento a direita, ele não aparece no papel, assim como quando uso o "taCenter" ele nao fica exatamente no centro.
http://prntscr.com/bbjdg3
Eu acho que tem a ver com o fato de a configuração do papel estar maior do que deveria ser! Alguem sabe como resolver isto? Obrigado.
Estou tentando fazer a impressão dos cupons não fiscais, porém estou com um problema na hora de posicionar os elementos no papel.
Quando utilizo a propriedade Font.Align do VDOPrinter e alinho o elemento a direita, ele não aparece no papel, assim como quando uso o "taCenter" ele nao fica exatamente no centro.
http://prntscr.com/bbjdg3
Eu acho que tem a ver com o fato de a configuração do papel estar maior do que deveria ser! Alguem sabe como resolver isto? Obrigado.
Vitor Ferreira
Curtidas 0
Respostas
Robson Pinheiro
02/06/2016
estou com o mesmo problema , consegui alguma solução?
GOSTEI 0
Vitor Ferreira
02/06/2016
Sim, eu formatei a fonte para Courier New e contei quantos caracteres cabe por linha. Vou citar o código pra ser mais fácil de explicar:
29 é o numero de caracteres que cabe na linha
texto é o numero de caracteres que vao ser digitados na linha (ps: texto: extended)
branco vai armazenar os espaços que depois vao ser inseridos para deixar no meio
Utilizei a função RoundDn pra sempre arredondar pra baixo no caso de der números decimais. Ela não é nativa do Delphi.
espaco é os caracteres que sobrarão sem preencher, dividimos por 2 para colocarmos metade dos espaços à esquerda e a outra à direita.
Se conseguir resolver usando o outro método me avise!
texto := length((FMForm.empresaQuery['nome']));
AlignCenter(29, texto);
Print(00, (branco + FMForm.empresaQuery['nome']) + branco, True);
AlignCenter(29, texto);
Print(00, (branco + FMForm.empresaQuery['nome']) + branco, True);
29 é o numero de caracteres que cabe na linha
texto é o numero de caracteres que vao ser digitados na linha (ps: texto: extended)
branco vai armazenar os espaços que depois vao ser inseridos para deixar no meio
procedure TCIForm.AlignCenter(linha: extended; texto:extended);
var i : integer;
espaco: extended;
begin
branco := '';
espaco := (linha-texto)/2;
for i := 1 to Round(RoundDn(espaco)) do
branco := ' ' + branco;
end;
var i : integer;
espaco: extended;
begin
branco := '';
espaco := (linha-texto)/2;
for i := 1 to Round(RoundDn(espaco)) do
branco := ' ' + branco;
end;
Utilizei a função RoundDn pra sempre arredondar pra baixo no caso de der números decimais. Ela não é nativa do Delphi.
espaco é os caracteres que sobrarão sem preencher, dividimos por 2 para colocarmos metade dos espaços à esquerda e a outra à direita.
Se conseguir resolver usando o outro método me avise!
GOSTEI 0
Robson Pinheiro
02/06/2016
amigo como vc fez essa função RoundDn funcionar , não consegui :(
GOSTEI 0