icWindow | input | character | Window |
icBusinessComponentCode | input | character | |
icActivityCode | input | character | |
icRoleName | input | character | Role for which the window is being customised (ignored when customising on system level) |
icUserLogin | input | character | Login of user for which the window is being customised (ignored when not customising on user level) |
iiDesignLayerType | input | integer | Layer Type = customisation level |
ilIncludeLowerLevel | input | logical | include lower design levels (merged) |
tControlPropertyForWindow | output | temp-table | current level of customisation |
oiReturnStatus | output | integer | Return status of the method. |
empty temp-table tControlPropertyForWindow. <M-16 run DataLoadByWindowActivity (input icWindow (icWindow), input icBusinessComponentCode (icBusinessComponentCode), input icActivityCode (icActivityCode), input icRoleName (icRoleName), input icUserLogin (icUserLogin), input iiDesignLayerType (iiLayerType), input ilIncludeLowerLevel (ilIncludeLowerLevels), output oiReturnStatus (oiReturnStatus)) in BControlProperty> if oiReturnStatus < 0 then return. /* ================================================================= */ /* Copy data into output table, merged on customisation level */ /* ================================================================= */ for each tControlProperty by tControlProperty.ControlPropertyLayerType on error undo, throw: if tControlProperty.ControlPropertyName = {&CONTROLPROPERTY-VIEWSDEFINITIONS} then do: /* special merge for views only */ /* For View, only one ControlProperty is returned, where the different levels are saved in the field */ /* tcControlPropertyValue with chr (2) */ find first tControlPropertyForWindow where tControlPropertyForWindow.tcControlPropertyControl = tControlProperty.ControlPropertyControl and tControlPropertyForWindow.tcControlPropertyName = tControlProperty.ControlPropertyName no-error. if available tControlPropertyForWindow then do: /* syntax = USER chr(2) ROLE chr(2) SYSTEM */ /* ControlPropertyLayerType = 1 --> USER */ /* ControlPropertyLayerType = 2 --> ROLE - should be one chr (2)*/ /* ControlPropertyLayerType = 3 --> SYSTEM - should be two chr (2) */ if tControlProperty.ControlPropertyLayerType = {&CONTROLPROPERTYLAYERTYPE-SYSTEM} and num-entries (tControlPropertyForWindow.tcControlPropertyValue,chr(2)) = 2 THEN assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + chr(2). else if tControlProperty.ControlPropertyLayerType = {&CONTROLPROPERTYLAYERTYPE-SYSTEM} and num-entries (tControlPropertyForWindow.tcControlPropertyValue,chr(2)) = 1 THEN assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + chr(2) + chr (2). else if tControlProperty.ControlPropertyLayerType = {&CONTROLPROPERTYLAYERTYPE-ROLE} and num-entries (tControlPropertyForWindow.tcControlPropertyValue,chr(2)) = 1 THEN assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + chr(2). If Not Can-find(First tControlPropertySegment Where tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID) Then Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + tControlProperty.ControlPropertyValue. For Each tControlPropertySegment Where tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID By tControlPropertySegment.ControlPropertySegmentSeq on error undo, throw: Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + tControlPropertySegment.ControlPropertySegmentText. End. next. end. /* if available tControlPropertyForWindow */ end. /* if tControlProperty.ControlPropertyName = {&CONTROLPROPERTY-VIEWSDEFINITIONS} */ if not can-find (first tControlPropertyForWindow where tControlPropertyForWindow.tcControlPropertyControl = tControlProperty.ControlPropertyControl and tControlPropertyForWindow.tcControlPropertyName = tControlProperty.ControlPropertyName) then do: create tControlPropertyForWindow. assign tControlPropertyForWindow.tcControlPropertyAssemblyName = tControlProperty.ControlPropertyAssemblName tControlPropertyForWindow.tcControlPropertyAssemblyType = tControlProperty.ControlPropertyAssemblType tControlPropertyForWindow.tcControlPropertyControl = tControlProperty.ControlPropertyControl tControlPropertyForWindow.tcControlPropertyName = tControlProperty.ControlPropertyName tControlPropertyForWindow.tcControlPropertyParent = tControlProperty.ControlPropertyParent /*tControlPropertyForWindow.tcControlPropertyValue = tControlProperty.ControlPropertyValue*/ tControlPropertyForWindow.tiControlPropertyTab = tControlProperty.ControlPropertyTab tControlPropertyForWindow.tlControlPropertyChildChanged = tControlProperty.ControlPropertyChildChange tControlPropertyForWindow.tiControlPropertyLayerType = tControlProperty.ControlPropertyLayerType. If Not Can-find(First tControlPropertySegment Where tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID) Then Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + tControlProperty.ControlPropertyValue. For Each tControlPropertySegment Where tControlPropertySegment.ControlProperty_ID = tControlProperty.ControlProperty_ID By tControlPropertySegment.ControlPropertySegmentSeq on error undo, throw: Assign tControlPropertyForWindow.tcControlPropertyValue = tControlPropertyForWindow.tcControlPropertyValue + tControlPropertySegment.ControlPropertySegmentText. End. end. end.