You have the order wrong. First you set the property to NULL, then you release it.
>Standard practice seems to be, to set an object's property to .NULL. after releasing an object tied to a property. For example:
>
>o=CREATEOBJECT("empty")
>ADDPROPERTY(o, "o1", CREATEOBJECT("form"))
>o.o1.release()
>o.o1=.null.
>? TYPE("o.o1")
>
>
>It seems it would be better to set the property to .F. instead, after releasing it. That way, anything that tests for TYPE("o.o1") = "O" would not be fooled. Setting the property to .NULL. still leaves the type as "O" (object). Whereas, setting the property to .F. changes the type to "L". Is there a good reason for using .null.? Which requires an additional test using ISNULL(). I often check using TYPE("..") = "O" because the property may not have been created and/or assigned. Thanks for any insight into reasons for using the .NULL. assignment.