• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Casas_Decimais

helldanger1

GForum VIP
Entrou
Ago 1, 2007
Mensagens
29,631
Gostos Recebidos
1
O exemplo a seguir leva um Edit e cinco RadioButtons no Form.
O usuário pode escolher o número de casas decimais admitidas no Edit através dos RadioButtons:



//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
AnsiString Numero = Edit1->Text;

int casas_decimais;
/*define o número de casas decimais*/
if(RadioButton1->Checked == true) casas_decimais = 1;
if(RadioButton2->Checked == true) casas_decimais = 2;
if(RadioButton3->Checked == true) casas_decimais = 3;
if(RadioButton4->Checked == true) casas_decimais = 4;
if(RadioButton5->Checked == true) casas_decimais = 5;

// retorna o número de caracteres do Text do Edit1 ao pressionar da tecla
int comprimento = Numero.Length();

if(((Key >= '0') && (Key <= '9')) || (Key == ','))
{
// retorna o número da posição da vírgula
int posicao_virgula = Numero.Pos(',');
if((posicao_virgula) &&
((comprimento - posicao_virgula) >= casas_decimais))
Edit1->ReadOnly = true;
else
Edit1->ReadOnly = false;
}
else if(Key == VK_BACK)
Edit1->ReadOnly = false;
else
Edit1->ReadOnly = true;

}
//---------------------------------------------------------------------------


Casas_Decimais.GIF



 
Topo