Hola.
Sigo pensando que no es el mejor planteo... Pero si de todos modos deseas hacerlo así, se me ocurre una chapuceada.
Poné en todos los componentes que son obligatorios la propiedad Tag = -1 (menos el TButton que está desactivado) y probá este de
código de ejemplo:
Código Delphi
[-]
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
ComboBox1: TComboBox;
procedure ControlExit(Sender: TObject);
private
procedure CMFocusChanged(var Message: TCMFocusChanged); message CM_FOCUSCHANGED;
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.CMFocusChanged(var Message: TCMFocusChanged);
var
i: Integer;
begin
Button1.Enabled:= True;
for i:= 0 to ComponentCount -1 do
if Components[i].Tag = -1 then
Button1.Enabled:= False;
end;
procedure TForm1.ControlExit(Sender: TObject);
begin
if (Sender is TEdit)and(TEdit(Sender).Text <> '') then
TEdit(Sender).Tag:= 0;
if (Sender is TComboBox)and(TComboBox(Sender).Text <> '') then
TComboBox(Sender).Tag:= 0;
end;
end.
Esto te activa el botón cuando todos los campos cumplan la condición que evalues en ControlExit.
Saludos.
