Basic Scheme

In pseudo code, calling the Designer is done as follows (functions marked with '*' are optional calls):

<open Job>
       (LlJobOpen, LlJobOpenLCID)
<define List & Label-settings>*
       (LlSetOption,
        LlSetOptionString,
        LlSetDebug,
        LlSetFileExtensions,
        LlSetNotificationMessage,
        LlSetNotificationCallback)
<which file?>*
       (LlSelectFileDlgTitleEx)
<define variables>
       (LlDefineVariableStart,
        LlDefineVariable,
        LlDefineVariableExt,
        LlDefineVariableExtHandle)
<define fields>*       (only LL_PROJECT_LIST)
       (LlDefineFieldStart,
        LlDefineField,
        LlDefineFieldExt,
        LlDefineFieldExtHandle)
<disable functions>*
       (LlDesignerProhibitAction,
        LlDesignerProhibitFunction)
<call designer>
       (LlDefineLayout)
<close Job>
       (LlJobClose)

It is sufficient for job management to get the job at the beginning of the program and to release it at the end; this job is then used both for Designer calls and printing. Normally a job handle can be retained for the whole lifetime of the application, so that it only has to be released at the end.

We recommend making global settings valid for all List & Label calls after LlJobOpen()/LlJobOpenLCID() and making local settings such as disabling menu items directly before calling the Designer or printing.