FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Deshabilitar Control !!!
Hola Foro:
Tengo el siguiente problemita: Necesito deshabilitar un control y que no guarde ningún evento mientras esté deshabilitado. Por ejemplo: procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin Button1.Enabled := False; for i := 1 to 2000 do begin Label1.Caption := IntToStr(i); Label1.Repaint; end; Button1.Enabled := True; end; Si el usuario hace clic en el botón, se iniciará el contador y deshabilitará el botón, pero mientras el botón está deshabilitado, si el usuario hace clic de nuevo, cuando finalice el proceso repetirá el conteo otra vez, cuando no debería de hacerlo, ya que el control está deshabilitado. Las gracias anticipadas, Víctor.- |
#2
|
||||
|
||||
hola....
se me ocurre que en lugar de deshabilitarlo deberias desasignar el procedimiento al evento OnClick del Boton... algo asi como ... espero te funcione.... saludos... |
#3
|
||||
|
||||
Hola Vic ia:
La verdad es que probé la opción presentada por ti, pero no me resultó, aparentemente sigue reconociendo el onclick:
|
#4
|
|||
|
|||
Si lo que quieres es que después de ejecutar el contador no se pueda hacer de nuevo, tienes 2 opciones
El chiste es no regresarlo a su estado anterior... o sea, si lo deshabilitas, no lo vuelva a habilitar al final del proceso... Espero que te sirva... Saludos... |
#5
|
||||
|
||||
Hola Marcos,
Sucede lo siguiente, yo no quiero que el usuario pueda hacer clic sobre el botón mientras esté ejecutándose el proceso, pero si quiero, que cuando termine le permita ejecutarlo de nuevo, es decir, necesito regresarle su estado anterior. Las dos opciones: Button1.Enabled := False; // Deshabilitar el botón o Button1.OnClick := nil; // Quitar el manejador de evento son buenas, pero no resuelven el problemita, ya que al usuario dar clic sobre el botón desactivado, cuando termina el proceso vuelve e inicia, es decir, el botón me está funcionando aunque esté deshabilitado. Espero haberme explicado bien, Víctor.- |
#6
|
|||
|
|||
Hola.
Puedes poner Application.ProcessMessages antes de habilitar el botón, no te hace falta deshabilitar el evento. un saludo |
#7
|
|||
|
|||
Cita:
Pero puedes intentar esto:
Con esto lograrás que el proceso solo se ejecute la primera vez que des click en el botón... Espero que te sirva... Saludos... |
|
|
|