Otra opción, intenta colocar el DISTINCT enseguida del SELECT y no dentro del paréntesis:
Código SQL
[-]
dm.QHorario.SQL.Clear;
dm.QHorario.SQL.Add('SELECT DISTINCT COUNT(HORARIO.NUM_FICHA) AS TOTALFICHAS');
dm.QHorario.SQL.Add(' FROM HORARIO,FICHA ');
dm.QHorario.SQL.Add('WHERE HORARIO.NUM_FICHA=FICHA.NUM_FICHA');
dm.QHorario.SQL.Add(' AND HORARIO.F_INI_HORARIO<=:e');
Saludos