You should use RETURN ERROR instead of RETURN NO-APPLY to interrupt triggers on dynamic viewers. RETURN NO-APPLY does not propagate up the procedure stack. This behavior means that it cannot interrupt a default event in a procedure that is defined as a trigger event for a widget on a dynamic viewer. An example of this situation is when you want to avoid setting focus on the next field on the TAB event.
In addition, RETURN ERROR works if the event procedure is defined directly as a persistent trigger outside of Progress Dynamics.