Olá Fernando!
Provavelmente há algum problema com o VFP ou tem algum segredo para utilizar aquela Array de propriedades. Para conseguir o efeito que você quer é só criar um
método Assign sem atribuir o novo valor, assim:
DEFINE CLASS myclass AS CUSTOM olepublic
MyProperty = 5.2
HIDDEN Procedure MyProperty_Assign
LPARAMETERS vNewVal
MESSAGEBOX("Propriedade Somente Leitura")
EndProc
ENDDEFINE
Espero ter ajudado.
Até mais.
Erick
Força Sempre!
Strength Always!