* IN the form, a sneaky little method hides... PROCEDURE RandomMethod LOCAL uResult uResult = NULL DO CASE CASE VARTYPE(ThisForm.cmdCancel) = 'O' uResult = thisform.cmdCancel && object ref CASE DAY(DATE()) = 2 * INT(DAY(DATE())/2) uResult = "I'm even" && string based on a number CASE thisform.BackColor = RGB(0,0,255) uResult = "I'm blue behind all this" && random CASE thisform.ForeColor = RGB(0,0,0) * uResult will be null if it gets here and the forecolor is BLACK OTHERWISE uResult = Thisform.BackColor/ForeColor && now you know why I check for 0 ENDCASE RETURN uResult * Somewhere else in the form lies this code... MyVar = thisform.RandomMethod() * MyVar now has the return in it.