There are two different situations:
You can try to use dynamic actions (disable/enable) if you are on apex 4.0 or higher.
Dynamic action (on Page Load) - Form1
Condition: if some item value in form1 has some value (P1_DUMMY_ID_PLAN = '10.01') or (P1_level1 = 1 and P1_level2 = 2) or something similar
True action: disable -> items: list of your items to be disabled (P1_level1,P1_level2)
It should be better if you reproduce your needs to apex.oracle.com
To solve my question, I used read only option. I selected PL/SQL Function body returning a boolean and put
if(CST_RETURN_LEVEL(:P7_ID_PAR_PLANO_GER) >= 2 ) then
where CST_RETURN_LEVEL is a function that returns the last level filled. If page item is level 2, then I test, if CST_RETURN_LEVEL(:P7_ID_PAR_PLANO_GER) >= 2 then I returned true to read only and so on for other page items.