Forum Post: RE: Problem walking the procedure tree

  • Thread starter Thread starter Mark Davies
  • Start date Start date
Status
Not open for further replies.
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:PERSISTENT ttProcedures.SuperProc = LOOKUP(STRING(hProc),SESSION:SUPER-PROCEDURES) GT 0. END. RUN GetProcedures(ip-Handle:NEXT-SIBLING). END. END PROCEDURE.

Continue reading...
 
Status
Not open for further replies.
Back
Top