PROCEDURE walkWidgets:
DEF INPUT PARAMETER ipHandle AS HANDLE NO-UNDO.
DEF VAR hHandle AS HANDLE NO-UNDO.
IF NOT VALID-HANDLE(ipHandle)
OR ipHandle:TYPE NE "FRAME":U
THEN RETURN.
hHandle = ipHandle:FIRST-CHILD.
DO WHILE VALID-HANDLE(hHandle):
MESSAGE hHandle:TYPE.
IF hHandle:TYPE EQ "FIELD-GROUP":U
THEN hHandle = hHandle:FIRST-CHILD.
ELSE DO:
IF hHandle:TYPE EQ "FRAME":U
THEN RUN walkWidgets (INPUT hHandle).
hHandle = hHandle:NEXT-SIBLING.
END. /* else do */
END. /* do while valid-handle */
END PROCEDURE.