Limitar as casas decimais
21/06/2018
0
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
Post mais votado
22/06/2018
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);
Raimundo Pereira
Mais Posts
21/06/2018
Raimundo Pereira
Você que limitar ao gravar ou ao digitar no edit?
22/06/2018
Silvio Morelo
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
23/06/2018
Raimundo Pereira
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!
17/07/2018
Senac Periodicals
17/07/2018
Raimundo Pereira
datamodule.suatabela.fielbyname('valordoproduto').value:=LimitarCD(Edit1,Edit1.Text,2);
Clique aqui para fazer login e interagir na Comunidade :)