Ver Mensaje Individual
  #2  
Antiguo 12-05-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Yo utilizaría un componente "TActionList", concretamente prepararía una acción que asociaría con el botón de marras mediante su propiedad "Action". En el evento "OnExecute" de dicha acción haría lo que tuviera que hacerse, y, aprovechando el evento "OnUpdate" de la acción, haría algo parecido a esto:

Código Delphi [-]
procedure TForm1.Action1Update(Sender: TObject);
begin
  { Habilitamos o deshabilitamos la acción
    y con ello el botón que tenga la acción
  }
  Action1.Enabled := ValidaEdits;
end;

procedure TForm1.Action1Execute(Sender: TObject);
begin
  { Se ejecuta al hacer clic el botón
    al que se le asignó esta acción
  }
  ShowMessage('Pudiste pulsar el botón...');
end;

{ Valida que los "TEdits" del formulario
  no contengan únicamente cadenas vacías

  Se trata de un ejemplo, únicamente para
  mostrar cómo podemos utilizar el evento
  "OnUpdate" de las acciones.
}
function TForm1.ValidaEdits : boolean;
var
  i: integer;
begin
  Result := true;
  for i := 0 to ComponentCount-1 do
  begin
    if (Components[i] is TEdit) and (TEdit(Components[i]).Text = '') then
    begin
      Result := false;
      Exit;
    end;
  end;
end;

... o algo parecido. En definitiva, utilizaría el evento "OnUpdate" para validar los "TEdits" de forma que habilitara o no la acción del botón (y con ello el botón mismo).

Adjunto el proyecto de ejemplo que incluye el código de más arriba para que pueda verse "el asunto" funcionando.
Archivos Adjuntos
Tipo de Archivo: zip taction.zip (1,5 KB, 14 visitas)
__________________
David Esperalta
www.decsoftutils.com