Something does not add up here...
#if(%nChangeCondition<>'')
If (%nChangeCondition) then loc:FormOk = 0.
#EndIf
#if(%nLoggedIn=1 and %nLevel = '')
If p_web.GetSessionLoggedIn() = 0 then loc:FormOk = 0.
#elsif(%nLoggedIn=1 and %nLevel <> '')
If p_web.GetSessionLoggedIn() and p_web.GetSessionLevel() <= %nLevel then loc:FormOk = 0.
#EndIf
My %nChangeCondition is "CanEdit()", so the generated code is "IF CanEdit()...FormOK=0" while "IF LoggedIn()=0...FormOk=0". Should this not be "IF NOT(CanEdit())..."?