PUBLIC oform1 oform1=NEWOBJECT("form1") oform1.Show RETURN DEFINE CLASS form1 AS form ShowTips = .T. Caption = "Form1" timeout = (DATETIME()+15) ADD OBJECT command2 AS commandbutton WITH ; Top = 24, ; Left = 76, ; Height = 27, ; Width = 84, ; Caption = "resettime", ; Name = "Command2" ADD OBJECT cm_dynamic1 AS cm_dynamic WITH ; Top = 159, ; Left = 94, ; Caption = "moveMouse", ; eenabled = "DATETIME()>M.THISFORM.TIMEOUT", ; etooltiptext = [IIF(DATETIME()<M.THISFORM.TIMEOUT,"Wait "+TRANS(M.THISFORM.TIMEOUT-DATETIME()),'')], ; evisible = "DATETIME()+10>M.THISFORM.TIMEOUT", ; Name = "Cm_dynamic1" PROCEDURE command2.Click thisform.Timeout=DATETIME()+15 ENDPROC ENDDEFINE DEFINE CLASS cm_dynamic AS commandbutton eenabled = "m.This.Enabled" etooltiptext = "m.This.ToolTipText" evisible = "m.This.Visible" HIDDEN PROCEDURE tooltiptext_access RETURN EVALUATE(m.THIS.eToolTipText) ENDPROC PROCEDURE visible_access this.Enabled = EVALUATE(m.This.eEnabled) this.Visible = EVALUATE(m.This.eVisible) RETURN m.this.Visible ENDPROC ENDDEFINEOf course, to play with baseclass's property_access can be a risk.