es curioso, en un proyecto que tenemos en mente necesitabamos hacer algo asi, casualmente pregunte como se hacia y me dijeron esto:
a cada uno de los TEdit's que sea necesario llenar antes de habilitar el boton le asignas un nombre seguido de un correlativo por ejemplo edit0,edit1,edit2,edit3 ..., el boton lo dejas deshabilitado desde el inicio, al primer TEdit le asignas el evento OnChange asi:
procedure TForm1.edit0Change(Sender: TObject);
var i:integer;
begin
button1.enabled:=true;
for i:=0 to 3 do
button1.enabled:=button1.enabled and
(trim(TEdit( findComponent('edit'+intToStr(i)) ).text)<>'')
end;
luego a cada uno de los otros TEdit le asignas ESTE MISMO evento (no se deber crear otro para cada uno).
este ejemplo funciona asumiendo que son 4 TEdit's (partimos del 0), que sus nombres comienzan con edit mas un correlativo, y que cuando los 4 tengan texto el boton llamado "button1" sera habilitado
No lo he probado porque despues decidimos no hacerlo asi , pero espero que te sirva de algo, saludos