| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
grz47 Ens


Registrado: 05 Ago 2005Mensajes: 40Ubicación: SINALOA, MEXICO
|
Publicado: Vie 04 Feb, 2011 7:02 am Asunto: No repetir puntos ni comas en un edit |
|
|
Buenas noches compañeros del foro
La cuestion es que tengo un TEdit para la captura de un numero Flotante y este lo formateo con FormatFloat("Mascara", Variable), pero en este mismo se pueden capturar varias veces los puntos y las comas (2...23 o 2,,,5...03)lo cual obviamente da error.
si alguien me puede ayudar para limitar el Edit a una sola coma y un solo punta se los agradeceria mucho, cabe mencionart que ya e buscado mucho y no encuentro nada que me resulte util
gracias _________________ GRZ 47 |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 04 Feb, 2011 1:02 pm Asunto: |
|
|
Creo que tienes tres opciones.
Una es usar un TMaskEdit en lugar de TEdit. En la propiedad Mask le pones los que quieras que se escriba (por ejemplo; ###,##0.00 si quieres que aparezca 999.999,00 ó 9,999.99).
La otra opcíón es en el evento OnExit del TEdit:
| Código: | void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
for (int nLetra1 = 1; nLetra1 <Edit1>Text.Length(); nLetra1 ++)
{
if (Edit1->Text.SubString(nLetra1, 1) == "," || Edit1->Text.SubString(nLetra1, 1) == ".")
for (int nLetra2 = nLetra1 + 1; nLetra <Edit1>Text.Length(); nLetra2 ++)
if (Edit1->Text.SubString(nLetra2, 1) == "," || Edit1->Text.SubString(nLetra2, 1) == ".")
{
ShowMessage("El número introducido es incorrecto");
Edit1->SetFocus();
return;
}
}
} |
No lo he probado pero debería funcionar. Otra posiblidad, también en el OnExit:
| Código: | void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
try
{
double nValor = StrToFloat(Edit1->Text);
}
catch(...)
{
ShowMessage("El número introducido es incorrecto");
Edit1->SetFocus();
return;
}
} |
Este sí funciona, seguro. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Vie 04 Feb, 2011 1:41 pm Asunto: |
|
|
| Código: |
String QuitaRepetidos(String Str, String chr)
{
do
Str = StringReplace(Str, chr + chr, chr, TReplaceFlags() << rfReplaceAll);
while(Str.AnsiPos(chr + chr)) ;
return Str;
}
|
Ejemplo:
| Código: |
String Str = QuitaRepetidos("1...45", ".");
|
Saludos. |
|
| Volver arriba |
|
 |
grz47 Ens


Registrado: 05 Ago 2005Mensajes: 40Ubicación: SINALOA, MEXICO
|
Publicado: Sab 19 Feb, 2011 8:05 am Asunto: |
|
|
buenas noches
no había tenido tiempo de pasar por el foro voy a probar y les comento que paso gracias _________________ GRZ 47 |
|
| Volver arriba |
|
 |
grz47 Ens


Registrado: 05 Ago 2005Mensajes: 40Ubicación: SINALOA, MEXICO
|
Publicado: Jue 24 Feb, 2011 5:09 am Asunto: |
|
|
buenas noches
nadamas para agradecer _________________ GRZ 47 |
|
| Volver arriba |
|
 |
grz47 Ens


Registrado: 05 Ago 2005Mensajes: 40Ubicación: SINALOA, MEXICO
|
Publicado: Jue 24 Feb, 2011 5:10 am Asunto: |
|
|
disculpas por el anterior jeje error de dedo
pues como decia anteriormente nadamas para agradecer a escafandra era exactamente lo que estaba buscando _________________ GRZ 47 |
|
| Volver arriba |
|
 |
|