M
Mark Davies
Guest
Hi, You need to get the first child, this gives you the window handle and then get the window's instantiating procedure to walk the procedure tree. Replace the button code with this: RUN GetProcedures IN THIS-PROCEDURE (INPUT SESSION:FIRST-CHILD) and then use the following code in your GetProcedures procedure: PROCEDURE GetProcedures : /*------------------------------------------------------------------------------ Purpose: Parameters: none Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ip-Handle AS HANDLE NO-UNDO. DEFINE VARIABLE lvInst AS HANDLE NO-UNDO. DEFINE VARIABLE hProc AS HANDLE NO-UNDO. IF VALID-HANDLE(ip-Handle) THEN DO: IF ip-handle:TYPE = "WINDOW" AND VALID-HANDLE(ip-handle:INSTANTIATING-PROCEDURE) THEN hProc = ip-handle:INSTANTIATING-PROCEDURE. ELSE hProc = ip-handle. IF CAN-QUERY(hProc,"INSTANTIATING-PROCEDURE") AND VALID-HANDLE(hProc:INSTANTIATING-PROCEDURE) THEN DO: CREATE ttProcedures. ASSIGN lvInst = hProc:INSTANTIATING-PROCEDURE. ASSIGN ttProcedures.ProcHandle = hProc ttProcedures.ProcName = hProc:NAME ttProcedures.ProcInstantiator = lvInst:NAME WHEN VALID-HANDLE(lvInst) ttProcedures.ProcFileName = hProc:FILENAME ttProcedures.ProcPersistent = hProc
ERSISTENT ttProcedures.SuperProc = LOOKUP(STRING(hProc),SESSION:SUPER-PROCEDURES) GT 0. END. RUN GetProcedures(ip-Handle:NEXT-SIBLING). END. END PROCEDURE.
Continue reading...
Continue reading...