Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #16  
Antiguo 07-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

Si tenes razón, la función falla en el caso que comentas. Y la tuya también lo hace cuando detecta un error al salir del Edit. Luego de mostrar el mensaje y asignarle nuevamente el foco y estándo el texto selecionado, permite la introducción de un número ya que los valores de SelStart y SelLength no son actualizados.

Sin embargo, pude comprobar que se simplifica el tratamiento con el uso de String:
Código:
...

String wrongChar  = "|°¬!\"#$%&/()='?\\¿¡@´¨+*~{[^}]`<>,;.:-";

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  for(int i=0;i < ComponentCount; i++)
    if(Components[i]->ClassNameIs("TEdit"))
      (static_cast<TEdit*>(Components[i]))->Clear();
}

void __fastcall TForm1::EditKeyPress(TObject *Sender, char &Key)
{
  TEdit *ed = static_cast<TEdit*>(Sender);

  if(ed->SelStart+ed->SelLength == 0 && (char)Key>='0' && (char)Key<='9' ||
     wrongChar.AnsiPos((char)Key)!=0) {
    MessageBeep(MB_ICONERROR);
    Key=0;
  }
}

void __fastcall TForm1::EditExit(TObject *Sender)
{
  TEdit *ed = static_cast<TEdit*>(Sender);
  bool invalid = false;

  if(ed->Text == "") return;

  if(ed->Text[1]>='0'&&ed->Text[1]<='9'|| wrongChar.AnsiPos(ed->Text[1])!=0)
    invalid = true;

  for(int i = 2; i <= ed->Text.Length(); i++)
    if(wrongChar.AnsiPos(ed->Text[i]))
      invalid = true;

  if (invalid) {
    MessageBeep(MB_ICONERROR);
    ed->SetFocus();
    ed->SelStart = 0;
    ed->SelLength = 0;
  }
}
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
nombres de tablas en un SP akela Conexión con bases de datos 2 14-12-2007 21:11:34
Propiedad tableName,al criterio look SQL 2 16-10-2007 01:54:32
¿Que componentes usar para tablas Paradox? h2o_mx Tablas planas 5 18-05-2006 18:14:38
Consejo para manejar tablas Paradox Coco_jac Varios 8 17-11-2005 17:27:17
como bloquear para borrar en tablas Paradox Mario1980 Varios 4 01-12-2004 15:17:51


La franja horaria es GMT +2. Ahora son las 00:04:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi