Limitar as casas decimais
Estou precisando limitar as casas decimais conforme parâmetro armazenado, por exemplo:
Caso o cliente tenha salvo que deseja utilizar 3 casas decimais a aplicação ira permitir somente 3 casas, se for 4 permite digitar 4 casas decimais, assim até o limite de 6 casas decimais.
Como eu faço isso?!?
Obrigado
Caso o cliente tenha salvo que deseja utilizar 3 casas decimais a aplicação ira permitir somente 3 casas, se for 4 permite digitar 4 casas decimais, assim até o limite de 6 casas decimais.
Como eu faço isso?!?
Obrigado
Silvio Morelo
Curtidas 0
Melhor post
Raimundo Pereira
22/06/2018
Boa noite.
Edit2.Text:=LimitarCD(Edit1,Edit1.Text,2);
Edit3.Text:=LimitarCD(Edit1,Edit1.Text,3);
Edit4.Text:=LimitarCD(Edit1,Edit1.Text,4);
Edit5.Text:=LimitarCD(Edit1,Edit1.Text,5);
Edit6.Text:=LimitarCD(Edit1,Edit1.Text,6);
function TForm2.LimitarCD(CampoOrigem:Tedit; Conteúdo_Origem: string; Casas:integer): string;
var Valor_Monetário: Currency;
Var Qtd_CD_Selected:string;
begin
try
Valor_Monetário:=StrToCurr(Conteúdo_Origem) ;
case Casas of
2 : Qtd_CD_Selected:='###,###,##0.00';
3 : Qtd_CD_Selected:='###,###,##0.000';
4 : Qtd_CD_Selected:='###,###,##0.0000';
5 : Qtd_CD_Selected:='###,###,##0.00000';
6 : Qtd_CD_Selected:='###,###,##0.000000';
end;
Result:=FormatFloat(Qtd_CD_Selected,Valor_Monetário);
except
ShowMessage('Você deve inserir um valor monetário válido');;
CampoOrigem.SelectAll;
CampoOrigem.SetFocus;
end;Edit2.Text:=LimitarCD(Edit1,Edit1.Text,2);
Edit3.Text:=LimitarCD(Edit1,Edit1.Text,3);
Edit4.Text:=LimitarCD(Edit1,Edit1.Text,4);
Edit5.Text:=LimitarCD(Edit1,Edit1.Text,5);
Edit6.Text:=LimitarCD(Edit1,Edit1.Text,6);
GOSTEI 1
Mais Respostas
Raimundo Pereira
21/06/2018
Boa tarde.
Você que limitar ao gravar ou ao digitar no edit?
Você que limitar ao gravar ou ao digitar no edit?
GOSTEI 0
Silvio Morelo
21/06/2018
Blz P2
Eu preciso limitar no edit conforme parâmetro salvo na base de dados
Por exemplo mudar as casas decimais da quantidade em todo o sistema de acordo com o parâmetro no banco de dados.
Obrigado pela ajuda
Eu preciso limitar no edit conforme parâmetro salvo na base de dados
Por exemplo mudar as casas decimais da quantidade em todo o sistema de acordo com o parâmetro no banco de dados.
Obrigado pela ajuda
GOSTEI 0
Raimundo Pereira
21/06/2018
function LimitarCD(CampoOrigem:Tedit; Conteúdo_Origem: string ): string;
public
{ Public declarations }
end;
VAR Use_CASAS:INTEGER;
// Para setar a quantidade cadas decimais basta
// Criar uma tabela paramentro do sistema um campo integer
// QCD // Quantidade de casas decimais
// Ao iniciar sua aplicação você pode carregar o paramentro
// Setar a variável posteriormente.
// >>>>> Use_CASAS:= DM.PARAM.FIELBYNAME('QCD').ASINTEGER;
implementation
{$R *.dfm}
function TForm1.LimitarCD(CampoOrigem: TEdit; Conteúdo_Origem: string): string;
var
Valor_Monetário: real;
Var
Qtd_CD_Selected: string;
begin
// Se for = 0 ele irá setar para 2 casas
if Use_CASAS =0 then
Use_CASAS:=2;
// Se for > 6 ele irá setar para 6 casas
if Use_CASAS >6 then
Use_CASAS:=6;
//
try
Valor_Monetário := StrToFloat(Conteúdo_Origem);
case Use_CASAS of
2:
Qtd_CD_Selected := '###,###,##0.00';
3:
Qtd_CD_Selected := '###,###,##0.000';
4:
Qtd_CD_Selected := '###,###,##0.0000';
5:
Qtd_CD_Selected := '###,###,##0.00000';
6:
Qtd_CD_Selected := '###,###,##0.000000';
end;
Result := FormatFloat(Qtd_CD_Selected, Valor_Monetário);
except
ShowMessage('Você deve inserir um valor monetário válido');
;
CampoOrigem.SelectAll;
CampoOrigem.SetFocus;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// Setar ao iniciar aplicação
// Simulando
// No onkeypress ele vai chamar a função para limitar.
if Key = #13 then
begin
Use_CASAS := 6; // setei aqui pois não usei uma tabela para carregar, mais você pode setar ao iniciar sua aplicação
// Carregando direto do BD.
Edit1.Text := LimitarCD(Edit1, Edit1.Text);
end;
end;
Nos retorne o feedback !
Abraço!
public
{ Public declarations }
end;
VAR Use_CASAS:INTEGER;
// Para setar a quantidade cadas decimais basta
// Criar uma tabela paramentro do sistema um campo integer
// QCD // Quantidade de casas decimais
// Ao iniciar sua aplicação você pode carregar o paramentro
// Setar a variável posteriormente.
// >>>>> Use_CASAS:= DM.PARAM.FIELBYNAME('QCD').ASINTEGER;
implementation
{$R *.dfm}
function TForm1.LimitarCD(CampoOrigem: TEdit; Conteúdo_Origem: string): string;
var
Valor_Monetário: real;
Var
Qtd_CD_Selected: string;
begin
// Se for = 0 ele irá setar para 2 casas
if Use_CASAS =0 then
Use_CASAS:=2;
// Se for > 6 ele irá setar para 6 casas
if Use_CASAS >6 then
Use_CASAS:=6;
//
try
Valor_Monetário := StrToFloat(Conteúdo_Origem);
case Use_CASAS of
2:
Qtd_CD_Selected := '###,###,##0.00';
3:
Qtd_CD_Selected := '###,###,##0.000';
4:
Qtd_CD_Selected := '###,###,##0.0000';
5:
Qtd_CD_Selected := '###,###,##0.00000';
6:
Qtd_CD_Selected := '###,###,##0.000000';
end;
Result := FormatFloat(Qtd_CD_Selected, Valor_Monetário);
except
ShowMessage('Você deve inserir um valor monetário válido');
;
CampoOrigem.SelectAll;
CampoOrigem.SetFocus;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// Setar ao iniciar aplicação
// Simulando
// No onkeypress ele vai chamar a função para limitar.
if Key = #13 then
begin
Use_CASAS := 6; // setei aqui pois não usei uma tabela para carregar, mais você pode setar ao iniciar sua aplicação
// Carregando direto do BD.
Edit1.Text := LimitarCD(Edit1, Edit1.Text);
end;
end;
Nos retorne o feedback !
Abraço!
GOSTEI 0
Silvio Morelo
21/06/2018
Obrigado P2, deu certo.
Abraços
Abraços
GOSTEI 0
Senac Periodicals
21/06/2018
Eu estou precisando limitar ao gravar no caso, me retornar uma mensagem dizendo que o numero colocado é invalido e etc
GOSTEI 0
Raimundo Pereira
21/06/2018
Basta passar para o destino duas casas:
datamodule.suatabela.fielbyname('valordoproduto').value:=LimitarCD(Edit1,Edit1.Text,2);
datamodule.suatabela.fielbyname('valordoproduto').value:=LimitarCD(Edit1,Edit1.Text,2);
GOSTEI 0
Raimundo Pereira
21/06/2018
Esta função retorna uma string, basta converter
GOSTEI 0