Fórum Formatar o cupom não Fiscal #469066

06/02/2014

0

Olá a todos,

Estou desenvolvendo um Sistema de Restaurante sem controle de mesa em delphi 7 e usando o firebird 2.5, só que estou com dificuldades em formatar o tamanho do campo para sair certinho no cupom não fiscal, alguém sabe como fazer isso ?

Minha Situação:
[img]http://arquivo.devmedia.com.br/forum/imagem/194427-20140206-123424.png[/img]



Como Desejo:
[img]http://arquivo.devmedia.com.br/forum/imagem/194427-20140206-123603.png[/img]

Exemplo: se a descrição do produto for maior a configuração da linha não muda.
Josenildo Rosa

Josenildo Rosa

Responder

Posts

06/02/2014

Leonardo Rehder

Boa tarde, Josenildo!

Você pode fazer alinhamento de carácter usando uma função do delphi chamada "StringOfChar".

Ex: Você tem que delimitar os tamanhos dos campos.

Usando o exemplo do cupom fiscal mesmo.

Codigo = String[3];
Descricao = String[30];
Unidade_Medida = String[2];
Quantidade = String[7];
Valor = String[7];
Caracter: string;
Quantidade_Alinhamento: Integer;

Alinhar a Direita;
Ex:
Caracter:= 0; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o "0" (Zero).
Quantidade_Alinhamento:= 3; //==> Quantidade de carácter você precisa alinhar;
Codigo:= '1';
Codigo := StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Codigo ))) + Codigo ;
Resultado da variável Codigo será = "001";

Alinhar a Esquerda;
Ex:
Caracter = ' '; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o " " (Espaço).
Quantidade_Alinhamento:= 7; //==> Quantidade de carácter você precisa alinhar;
Valor:= FormatFloat('0.00', Valor_Item);
Valor + StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Valor )));
Resultado da variável Valor será " 1.00";

Obs: Usa uma fonte que todos os carácter usa o mesmo tamanho. Ex: Lucida Console.

Na pratica você pode alinhar desta forma.

Codigo + ' ' + Descricao + ' ' + Unidade_Medida + ' ' + Quantidade + ' ' + Valor

Forte abraço, espero que te ajude!
Responder

Gostei + 0

06/02/2014

Josenildo Rosa

Oi Leonardo, desde já agradeço muito pela colaboração. Só uma duvida eu fazendo esses passos que você me indicou no cupom vai ficar igual a figura 2 que eu postei, ou seja, vai ficar conforme EXEMPLO abaixo, MESMO SE A DESCRIÇÃO DO PRODUTO FOR MAIOR OU MENOR.

CUPOM NÃO FISCAL
-----------------------------------------------------------------------
COD DESCRICAO QTD. VALOR
-----------------------------------------------------------------------
1 SELF SERVICE A KILO 2 R$ 5,50
1 MARMITEX PEQUENA 2 R$ 5,50
1 MARMITEX MEDIA 2 R$ 5,50
1 MARMITEX GRANDE 2 R$ 5,50
1 SUCO 2 R$ 5,50

-----------------------------------------------------------------------
TOTAL R$ 11,00
DESCONTO R$ 1,00
TOTAL R$ 10,00
------------------------------------------------

ABRAÇOS,



Boa tarde, Josenildo!

Você pode fazer alinhamento de carácter usando uma função do delphi chamada "StringOfChar".

Ex: Você tem que delimitar os tamanhos dos campos.

Usando o exemplo do cupom fiscal mesmo.

Codigo = String[3];
Descricao = String[30];
Unidade_Medida = String[2];
Quantidade = String[7];
Valor = String[7];
Caracter: string;
Quantidade_Alinhamento: Integer;

Alinhar a Direita;
Ex:
Caracter:= 0; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o "0" (Zero).
Quantidade_Alinhamento:= 3; //==> Quantidade de carácter você precisa alinhar;
Codigo:= '1';
Codigo := StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Codigo ))) + Codigo ;
Resultado da variável Codigo será = "001";

Alinhar a Esquerda;
Ex:
Caracter = ' '; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o " " (Espaço).
Quantidade_Alinhamento:= 7; //==> Quantidade de carácter você precisa alinhar;
Valor:= FormatFloat('0.00', Valor_Item);
Valor + StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Valor )));
Resultado da variável Valor será " 1.00";

Obs: Usa uma fonte que todos os carácter usa o mesmo tamanho. Ex: Lucida Console.

Na pratica você pode alinhar desta forma.

Codigo + ' ' + Descricao + ' ' + Unidade_Medida + ' ' + Quantidade + ' ' + Valor

Forte abraço, espero que te ajude!
Responder

Gostei + 0

06/02/2014

Leonardo Rehder

Boa noite, Josenildo!

Se você seguir a regra que eu te passei ela ficará igual a sua figura dois!

Se a string que você pedir para alinhar automaticamente ela será contada na quantidade de carácter que você específico.

Segue dois exemplo:

//==> Corta a string no tamanho especificado na variável.
Procedure TForm1.FormShow(Sender: TObject);
Var
Str: String[30];
Begin
Str := 'AAAAAAAAAABBBBBBBBBBCCCCCCCCCCZZZZZZZZZZZZZZZZZ';
ShowMessage(Str);
End;

//==> Se não especificar o tamanho na variável. Use este exemplo.
Procedure TForm1.ATBitBtn1Click(Sender: TObject);
Var
Str: String;
Begin
Str := 'AAAAAAAAAABBBBBBBBBBCCCCCCCCCCZZZZZZZZZZZZZZZZZ';
Str := Copy(Str, 1, 30);
Str := StringOfChar(' ', (30 - Length(Str))) + Str;
ShowMessage(QuotedStr(Str));


Str := 'AAAAAAAAAA';
Str := Copy(Str, 1, 30);
Str := StringOfChar(' ', (30 - Length(Str))) + Str;
ShowMessage(QuotedStr(Str));
End;


Forte abraço, espero que te ajude!
Responder

Gostei + 0

28/02/2014

Josenildo Rosa

Leonardo bom dia!,

Desculpa a minha ignorancia, pois sei que tenho algumas dificuldades ainda no delphi, mas o codigo que voce me passou não está funcionando, pois está dando um erro na constante "caracter", mesmo definida o delphi não está reconhecendo.

Alinhar a Direita;
Ex:
Caracter:= 0; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o "0" (Zero).
Quantidade_Alinhamento:= 3; //==> Quantidade de carácter você precisa alinhar;
Codigo:= '1';
Codigo := StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Codigo ))) + Codigo ;
Resultado da variável Codigo será = "001";

Alinhar a Esquerda;
Ex:
Caracter = ' '; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o " " (Espaço).
Quantidade_Alinhamento:= 7; //==> Quantidade de carácter você precisa alinhar;
Valor:= FormatFloat('0.00', Valor_Item);
Valor + StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Valor )));
Resultado da variável Valor será " 1.00";




Boa tarde, Josenildo!

Você pode fazer alinhamento de carácter usando uma função do delphi chamada "StringOfChar".

Ex: Você tem que delimitar os tamanhos dos campos.

Usando o exemplo do cupom fiscal mesmo.

Codigo = String[3];
Descricao = String[30];
Unidade_Medida = String[2];
Quantidade = String[7];
Valor = String[7];
Caracter: string;
Quantidade_Alinhamento: Integer;

Alinhar a Direita;
Ex:
Caracter:= 0; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o "0" (Zero).
Quantidade_Alinhamento:= 3; //==> Quantidade de carácter você precisa alinhar;
Codigo:= '1';
Codigo := StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Codigo ))) + Codigo ;
Resultado da variável Codigo será = "001";

Alinhar a Esquerda;
Ex:
Caracter = ' '; //==> Nesta variável você define qual carácter que usar para fazer o alinhamento. Neste caso vamos usar o " " (Espaço).
Quantidade_Alinhamento:= 7; //==> Quantidade de carácter você precisa alinhar;
Valor:= FormatFloat('0.00', Valor_Item);
Valor + StringOfChar(Caracter, (Quantidade_Alinhamento- Length(Valor )));
Resultado da variável Valor será " 1.00";

Obs: Usa uma fonte que todos os carácter usa o mesmo tamanho. Ex: Lucida Console.

Na pratica você pode alinhar desta forma.

Codigo + ' ' + Descricao + ' ' + Unidade_Medida + ' ' + Quantidade + ' ' + Valor

Forte abraço, espero que te ajude!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar