Hola,
Creo que la comprobación para habilitar/inhabilitar el botón puede hacerse únicamente usando el evento OnChange del MaskEdit:
Código Delphi
[-]
procedure TForm1.MaskEdit1Change(Sender: TObject);
var
IsValid: Boolean;
begin
IsValid := true;
try
MaskEdit1.ValidateEdit;
except
on EDBEditError do
IsValid := false;
end;
btnCalculate.Enabled := IsValid and (Length(MaskEdit1.Text) = 8);
end;
Cuando se llena el MaskEdit, y luego se le borran caracteres, MaskEdit.Text está "lleno" pero es inválido.
Por otra parte, también puede optarse por usar dos controles TEdit para capturar cada una de las partes.
// Saludos