Kbase P122058: How to obtain the smartLinks between objects using 4GL
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  2/6/2007 |
|
Status: Unverified
GOAL:
How to obtain the smartLinks between objects using 4GL
GOAL:
How to use 4GL to determine the links between smartObjects.
FIX:
The code below is trigger code that can be used to read the links between smartObjects. This uses the supportedLinks property, so will not work with custom user defined links. In addition, the code relies on the current ADM link naming convention of -Source/-Target.
DEFINE VARIABLE cSupportedLinks AS CHARACTER NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE cLink AS CHARACTER NO-UNDO.
DEFINE VARIABLE h_link AS HANDLE NO-UNDO.
DEFINE VARIABLE cobj AS CHARACTER NO-UNDO.
DEFINE VARIABLE istartpos AS INTEGER NO-UNDO.
DEFINE VARIABLE cNewLink AS CHARACTER NO-UNDO.
DEFINE VARIABLE cLinkList AS CHARACTER NO-UNDO.
DEFINE VARIABLE clnk AS CHARACTER NO-UNDO.
{get supportedLinks cSupportedLinks TARGET-PROCEDURE}.
DO i = 1 TO NUM-ENTRIES(cSupportedLinks):
cLink = ENTRY(i,cSupportedLinks).
istartpos = INDEX(cLink,"-Target").
IF istartpos > 0 THEN
DO:
cNewLink = REPLACE(cLink,"-Target","Source").
cLnk = SUBSTRING(cLink,1,LENGTH(Clink) - (LENGTH(cLink) - istartpos) - 1).
END.
ELSE
DO:
istartpos = INDEX(cLink,"-Source").
IF istartpos > 0 THEN
DO:
cNewLink = REPLACE(cLink,"-Source","Target").
cLnk = SUBSTRING(cLink,1,LENGTH(Clink) - (LENGTH(cLink) - istartpos) - 1).
END.
ELSE
cLnk = Clink.
END.
h_link = DYNAMIC-FUNCTION("get" + cNewLink IN TARGET-PROCEDURE).
IF VALID-HANDLE(h_link) THEN
cLinkList = cLinkList + "," + clnk.
END.
MESSAGE cLinkList
VIEW-AS ALERT-BOX INFO BUTTONS OK.