Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No funciona boton (https://www.clubdelphi.com/foros/showthread.php?t=52614)

brakaman 25-01-2008 22:14:54

No funciona boton
 
Hola amigos:

Estoy peleandome con un form en el cual tengo un boton para salir, el cual se inhabilita (no funciona) cuando entro en un TEdit en el cual tengo un codigo como este en el evento OnExit


Código Delphi [-]
procedure TFprincipal.ECuentaExit(Sender: TObject);
begin
If (Length((Sender As TEdit).Text) < 10) OR ((Sender As TEdit).Text='') Then
(Sender As TEdit).SetFocus;
end;





¿Como puedo hacer que no se inhabilite el boton y pueda salir del formulario aunque este en este Edit, ya que usuario se queja que tiene que rellenar los datos y luego pulsar el boton salir.

Gracias por vuestra ayuda.:D

eduarcol 25-01-2008 22:19:08

btSalir es el boton qe usas para la salida, lo escribi de memoria pero deberia funcionar

Código Delphi [-]
procedure TFprincipal.ECuentaExit(Sender: TObject);
begin
   If ((Length((Sender As TEdit).Text) < 10) OR ((Sender As TEdit).Text='')) and not (ActiveControl is btSalir) Then
     (Sender As TEdit).SetFocus;
end;

ixMike 25-01-2008 22:20:20

Si con "se inhabilita" te refieres a que pierde el foco, pues creo que con el ratón podría hacerle clic.
Sino, prueba con esto:

Código Delphi [-]
procedure TFprincipal.ECuentaExit(Sender: TObject);
begin
  If Length((Sender As TEdit).Text)<10 Then
  if not BotonSalir.Focused then (Sender As TEdit).SetFocus;
end;


Quito lo de Text='' porque lógicamente si no tiene texto, Lenght es menor que diez seguro :D


Salu2. ;)

maeyanes 25-01-2008 22:21:49

Hola...

A mi me parece que estás haciendo en un mal lugar tu validación de datos...

Podrías hacerla desde el evento OnCloseQuery de la forma o si es para base de datos, en el evento BeforePost del DataSet que vayas a afectar.


Saludos...

ixMike 25-01-2008 22:21:55

Parece que eduarcol se me adelantó... esta lenta conexión...

Por cierto, eduarcol, uno de los debería estar atento a los mensajes de enecumene.... :D

enecumene 25-01-2008 22:33:34

Cita:

Empezado por ixMike (Mensaje 261039)
Parece que eduarcol se me adelantó... esta lenta conexión...

Por cierto, eduarcol, uno de los debería estar atento a los mensajes de enecumene.... :D

Oye! me tienen en la mira!:eek: que problema. :D:D:D.

Lepe 26-01-2008 04:03:12

Yo tendría cuidado con ese Edit, por el nombre, igual guarda el número de cuenta bancaria, contabilidad, etc, si no se escribe al completo puedes guardar inconsistencias en la BD

Lo más fácil, dejar que pulse el botón, si el Edit tiene menos de 10 letras, avisas al usuario en el OnCloseQuery y abortas el guardado del registro.

Saludos

brakaman 26-01-2008 15:40:44

Hola amigos:

gracias por las ideas.

cuando digo se inhabilita quiero decir que al pulsar click con el raton no funciona. O sea no cierra el formulario.

En cuanto a lo de inconsistencias no habra ninguna ya que en este caso quiero salir sin grabar, simplemente quiero salir del formulario encontrandome en la edicion del TEdit, cosa que no me deja y solo puedo salir pulsando la tecla <ESC>

Ya se que no es grave pero me gustaria darle una solucion elegante.:D

Tambien podria dejar que introdujera los caracteres que le de la gana y al final realizar la comprobacion, es otra posibilidad.

ixMike 26-01-2008 15:51:40

Creo que la solución de Lepe es la mejor. Quitas eso de que Length<10 y haces una comprobación antes de salir. Si le das al botón salir, pues sencillamente no comprueba nada: sale y punto. Y si le da al botón "Grabar", pues comprueba que todos los datos son correctos.


Salu2.

brakaman 26-01-2008 16:28:31

Ok.

Esta hecho asi, creo que no tendre problemas

Gracias pro las ideas aportadas. :D


La franja horaria es GMT +2. Ahora son las 05:20:20.

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