Ver Mensaje Individual
  #2  
Antiguo 01-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Este tipo de comprobaciones suelen ser complejas, si está en el edit específico, si tiene texto distinto de la cadena vacía, etc.

Puedes crear un procedimiento llamado, por ejemplo: DoEnableSearchButton

Ese procedimiento mira si se cumple todas las comprobaciones y pone el boton en Enable o false. Tendrás que llamar a ese procedimiento cada dos por tres. Yo lo haría de la forma más eficiente aunque ilegible... es mi opinión personal, algunas veces lo he hecho así:
Código Delphi [-]
procedure TForm1.DoEnableSearchButton;
begin
  SearchButton.Enabled := (Trim(edit1.text) <> EmptyStr) and
                         (Checkbox1.Checked) and
                         (Radiobutton1.itemindex in [1..3]);
end;

Otra solución más sencilla, dejar el botón siempre habilitado, al pulsar el botón haces las comprobaciones, si no se puede continuar por algún error, muestras tu mensaje personalizado:

Código Delphi [-]

type ENoSeguir = class Exception ; // creo mi propia excepción.


procedure TForm1.SearchButtonClick(...);
begin
  if trim(edit1.text) = EmptyStr then
  begin
    Edit1.SetFocus;
    raise ENoSeguir.Create('Debe indicar el texto a buscar en la caja Nombre Cliente');
   end;
  AbrirConsultaConParametro(Edit1.Text);
end;
Esto significa que si el usuario no escribe nada, se lanza una excepción con el texto mostrado. Esto hace que se corte el flujo normal de ejecución y jamás se ejecutará "AbrirConsultaConParametro", y el foco se queda en el Edit1.

En el caso de que haya escrito algo en el Edit1, se abrirá la consulta y no obtiene errores.

Para el tema del foco sobre el botón, ¿puedes usar un SpeedButton en lugar de un TButton?, si es así, el SpeedButton no captura el foco del ratón, por tanto, al pulsar el Speedbutton puedes usar algo asï:
Código Delphi [-]
  if Form1.ActiveControl = edit1 then
  begin 
    lo que sea
  end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 01-11-2006 a las 14:52:02.
Responder Con Cita