project BLF > class BControlProperty > method LoadControlProperties

Description

Return values of customised control properties for a specific window / activity / customisation level.


Parameters


icWindowinputcharacterWindow
icBusinessComponentCodeinputcharacter
icActivityCodeinputcharacter
icRoleNameinputcharacterRole for which the window is being customised
(ignored when customising on system level)
icUserLogininputcharacterLogin of user for which the window is being customised
(ignored when not customising on user level)
iiDesignLayerTypeinputintegerLayer Type = customisation level
ilIncludeLowerLevelinputlogicalinclude lower design levels (merged)
tControlPropertyForWindowoutputtemp-tablecurrent level of customisation
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program1/bcontrolproperty.p)

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.