Date: 04-02-2018 Subject: RELEASE 10.0A Runtime Files These release notes pertain to the following programs or files: EMBEDINI 10.0A 02 Apr 2018 10.0.1.500 EMBEDINI64 10.0A 02 Apr 2018 10.0.1.500 HEXDUMP 10.0A 02 Apr 2018 10.0.1.500 HEXDUMP64 10.0A 02 Apr 2018 10.0.1.500 MAKECLI 10.0A 02 Apr 2018 10.0.1.500 MAKECON 10.0A 02 Apr 2018 10.0.1.500 MAKECONET 10.0A 02 Apr 2018 10.0.1.500 MAKEDEF 10.0A 02 Apr 2018 10.0.1.500 MAKEMFD 10.0A 02 Apr 2018 10.0.1.500 MANAGECE 10.0A 02 Apr 2018 10.0.1.500 OBJMATCH 10.0A 02 Apr 2018 10.0.1.500 OBJMATCH64 10.0A 02 Apr 2018 10.0.1.500 ODBCINST64 10.0A 02 Apr 2018 10.0.1.500 PLBCLICON 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 6) PLBCLIENT 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 6) PLBCLINET 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 6) PLBCON 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 6) PLBCONET 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 6) PLBNET 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 6) PLBSERVE 10.0A 02 Apr 2018 10.0.1.500 (Processed Server) PLBSERVET 10.0A 02 Apr 2018 10.0.1.500 (Threaded Server) PLBWEBSRV 10.0A 02 Apr 2018 10.0.1.500 (Processed Server) PLBWEBSRVT 10.0A 02 Apr 2018 10.0.1.500 (Threaded Server) PLBWIN 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 6) PLBCGI 10.0A 02 Apr 2018 10.0.1.500 PLBCLICON5 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 5) PLBCLIENT5 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 5) PLBCLINET5 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 5) PLBCON5 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 5) PLBCONET5 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 5) PLBNET5 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 5) PLBWIN5 10.0A 02 Apr 2018 10.0.1.500 (ComCtl 5) SUNAAMDX 10.0A 02 Apr 2018 10.0.1.500 SUNAAMDX64 10.0A 02 Apr 2018 10.0.1.500 SETGUID 10.0A 02 Apr 2018 10.0.1.500 SUNINDEX 10.0A 02 Apr 2018 10.0.1.500 SUNINDEX64 10.0A 02 Apr 2018 10.0.1.500 SUNLS 10.0A 02 Apr 2018 10.0.1.500 SUNMOD 10.0A 02 Apr 2018 10.0.1.500 SUNMOD64 10.0A 02 Apr 2018 10.0.1.500 SUNSORT 10.0A 02 Apr 2018 10.0.1.500 SUNSORT64 10.0A 02 Apr 2018 10.0.1.500 WININST 10.0A 02 Apr 2018 10.0.1.500 ODSBAC32.DLL 10.0A 02 Apr 2018 ODSBAC64.DLL 10.0A 02 Apr 2018 PLBNETSUP.DLL 10.0A 02 Apr 2018 10.0.1.500 Required for PLBNET PLBWSEC.DLL 10.0A 02 Apr 2018 10.0.1.500 Req'd PLBWIN/PLBNET SA_DLL32.DLL 10.0A 02 Apr 2018 10.0.1.500 SUNWADO.DLL 10.0A 02 Apr 2018 10.0.1.500 SUNWADO25.DLL 10.0A 02 Apr 2018 10.0.1.500 SUNWADO28.DLL 10.0A 02 Apr 2018 10.0.1.500 SUNWMSQL.DLL 10.0A 02 Apr 2018 10.0.1.500 SUNWODBC.DLL 10.0A 02 Apr 2018 10.0.1.500 SUNWSRV.DLL 10.0A 02 Apr 2018 10.0.1.500 SUNWSRV64.DLL 10.0A 02 Apr 2018 10.0.1.500 Required for Sundm64 DBGIFACE 10.0A 02 Apr 2018 PLBCMP 10.0A 02 Apr 2018 PLBDBUG 10.0A 02 Apr 2018 ADMEQU.INC 10.0A 02 Apr 2018 PLBEQU.INC 10.0A 02 Apr 2018 PLBMETH.INC 10.0A 02 Apr 2018 PLBCLI.ZIP 10.0A 02 Apr 2018 10.0.1.600 (ComCtl 6) PLBRUN.ZIP 10.0A 02 Apr 2018 10.0.1.600 (ComCtl 6) *============================================================================== Notes for some NEW Items: - Updated SQLite to use the '3.20.0 01 Aug 2017' release version. - The Windows PANEL object is enhanced to support events generated by HTML objects that have been loaded into the PANEL using the 'InnerHmtl' method. - A new PLB object named HTMLCONTROL has been implemented. This HTML control is supported by the PLBWIN, PLBNET, PLBSERVE, and PLBWEBSRV runtimes. *============================================================================== Notes for DOCUMENTATION: - Modify the 'Sunbelt PL/B Language Reference' manual for the 'Orient Event' as follows: 1. Change the 'eventis' to be 'event is' in the first description paragraph. 2. Change the '$$ClientEventOrient' in the Note (1.) to be '$ClientEventOrient' - Modify the 'Sunbelt PL/B Language Reference' manual for the EVENTREGISTER instruction under the Note (23.) to include the following: Value Keyword Event Notes New 302 $ClientEventPostMessage Postmessage PL/B Web Server Only. - Modify the 'Sunbelt PL/B Language Reference' manual to include the 'Postmessage Event' description as follows: Postmessage Event The Postmessage event is a PL/B Web Server event for the CLIENT object that occurs when a browser 'window' object 'message' event is detected after a JavaScript 'window.postMessage' method is executed. This CLIENT object event can be used to communicate data from an iframe to a PWS PL/B event routine. See this link for a description of the 'window.postMessage' method: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage Note the following: 1. The Postmessage event is referenced using an event value of 302. The equated label in PLBEQU.INC for this event is $ClientEventPostMessage. 2. The Postmessage event data is returned as a JSON string in the ARG1 parameter where the JSON data includes the following JSON field names\data: Value Represents the ... plbevent JavaScript field that must exist in the ARG1 JSON data. The value of this JSON field is ignored. data JavaScript field that contains user specific JSON data. origin JavaScript field that contains the value which is determined from the 'postMessage' 'targetOrigin' parameter. See the above link for more information on the 'targetOrigin' parameter. Example of JavaScript 'postMessage' in iframe JavaScript: parent.postMessage( { 'plbevent': true, 'data': "mydata" }, "*"); Example of ARG1 JSON data: ("plbevent": true, "data": "mydata", "origin" : "http://www.sunbelt-plb.com:8081"} - In the 'Sunbelt PL/B Language Reference' manual under the 'Innerhtml Method (PANEL) description, add the following to the Note (9.) " However, the Windows PL/B runtimes DO NOT support any HTML object events as described in Note 8." - In the 'Sunbelt PL/B Language Reference' manual remove all references to a 'INNERHTML Property' for a PANEL object. - In the 'Sunbelt PL/B Language Reference' manual under the 'SEARCHPATH' instruction, modify the notes (10.) and (11.) as follows: Note 10. (Modify to read as follows:) When the {tcpip id:port} address is provided as part of the {path} variable or literal, the instruction is executed at the server where the Data Manager is executing. In this case, the instruction logs on to the Data Manager, performs the operation, and logs off from the Data Manager for a GET action. However, when the SEARCHPATH ADD, REMOVE, or SET actions are executed successfully, the instruction DOES NOT log off from the Data Manager. Warning: If a SEARCHPATH ADD, REMOVE, or SET action takes affect, the client program logs on to the SUNDM Data Manager and the connection to the SUNDM Data Manager remains connected indefinitely. This connection remains active until the program is terminated or until the 'SETMODE DMKEEPACTIVE=0' instruction is executed. Please note that a CHAIN instruction does not cause this connection to be disconnected. See the GETMODE and SETMODE *DMKEEPACTIVE description for more information. Note 11. ( Remove/Delete this note ) - In the 'Sunbelt PL/B Language Reference' manual under the 'PATH' instruction, modify the note (9.) to read as follows: Note (9.) Modify as follows: If the {tcpip id:port} address is used with the PATH CHANGE keyword, the PATH instruction can take affect at the Data Manager as follows: A. When the PLB_CURDIR keyword has been specified in the SUNDM CFG file the logical current working directory for the child thread is changed at the Data Manager. B. If the PLB_CURDIR keyword is not used by the Data Manager, the PATH CHANGE instruction changes the directory for the Data Manager process which affects all clients accessing the Data Manager. Warning: When the PATH CHANGE instruction is executed, the client program logs on to the Data Manager and remains connected indefinitely. The connection remains active until the program is terminated or until a SETMODE DMKEEPACTIVE=0 instruction is executed. Please note that a CHAIN instruction does not cause this connection to be disconnected. See the GETMODE and SETMODE *DMKEEPACTIVE description for more information. - In the PL/B Language Reference manual under the 'CLOCK VERSION' section, delete the NOTE (1.). - In the PL/B Language Reference manual under the 'List Controls (GETMODE)' section delete the *CLOCKVERSION keyword from the list controls table. - In the PL/B Language Reference manual delete the '*CLOCKVERSION (GETMODE)' section. - In the PL/B Language Reference manual delete the '*CLOCKVERSION (SETMODE)' section. - In the PL/B Language Reference manual, remove all of the GETMODE and SETMODE *HOMEDIR keyword references. - In the PL/B Language Reference manual under the '*TEMPLATE (PRTPAGE)' section, modify the description paragraph to read as follows: "This advanced print control allows a page from a secondary PDF file to be included as a PDF object in the current page being generated for PDF output. This control allows a template page to be combined with PL/B program data to be generated into a single PDF output file. The template page used from the secondary PDF is not presented in the Print Preview. - In the PL/B Language Reference manual under the 'GETFILE' instruction change the Note (1.) to read as follows: Note (1.) "If the file specified is not open, the ZERO flag is cleared and the variables remain unchanged. If the file is open, the ZERO flag is set. If the file is a FILELIST, the zero flag is ONLY set when all of the AFILE\IFILE files in the FILELIST are opened. If any file in the FILELIST is closed, the ZERO flag is cleared and the variable(s) for a keyword may be changed for any opened files in the FILELIST. - In the PL/B Language Reference manual under the 'SETPROP' instruction change the Note (8.) to read as follows: Note (8.) "The {object} must be CREATEd before using SETPROP. If this is not done, a runtime error of O105 is generated. However, if the {object} is a COLLECTION that has not been created, the SETPROP operation is ignored and no error occurs." - In the PL/B Language Reference manual, add a GUI object section named 'HTMLCONTROL' as follows: HTMLCONTROL The HTMLCONTROL object is a container which can be populated with HTML elements. The HTMLCONTROL object can exist and be used in programs executed by the runtimes PLBWIN, PLBNET, PLBSERVE, and PLBWEBSRV. To define a HTMLCONTROL, use one of the following statement formats: (1) [label] HTMLCONTROL [%] (2) [label] HTMLCONTROL (arraysize) (3) [label] HTMLCONTROL ^ (4) [label] HTMLCONTROL ^,{target} (5) [label] HTMLCONTROL ^(arraysize) (6) [label] HTMLCONTROL ^(arraysize),({target}),...,({target}) Where: label Optional. A Program Execution Label. % Optional. Denotes the item as being GLOBAL. arraysize Required. An integer decimal constant, CONST variable, or EQUATEd value indicating the number of array items. ^ Optional. Denotes the item as being a POINTER. target Required. The name of a previously defined data item of the same type. Flags Affected: NONE Note the following: 1. The HTMLCONTROL object is a specialized container that can be populated with HTML elements. The HTML elements are defined in the 'InnerHtml' property data stream which can be simple HTML elements or a complex web page with supporting JavaScript, CSS, and HTML objects. 2. When HTML elements are created in a HTMLCONTROL, they are enabled, disabled, hidden, made visible, or destroyed when one of these actions take place on the HTMLCONTROL. 3. Multi-dimension arrays are supported to a maximum of fourteen dimensions. 4. The ^ denotes Pointer Variable. 5. Although a HTMLCONTROL may be defined as Global, it is DESTROYed during a CHAIN instruction. 6. When a HTMLCONTROL is created using a PL/B Web Server runtime, the HTML elements are loaded/rendered to the client browser like other PL/B GUI objects. 7. When a HTMLCONTROL is created using a Windows runtime including PLBWIN, PLBNET, or PLBSERVE, the HTMLCONTROL is created using the Windows OS 'IWebBrowser2' interface for the Windows PL/B runtimes. Properties: ANCHOR BGCOLOR DOCK ENABLED ( Requires Html Element attribute: 'data-plbenable' ) HEIGHT HWND INNERHTML ( Same behavior as 'InnerHtml' method. ) LEFT OBJECTID RUNNAME TABID ( Requires Html Element attribute: 'data-plbtabid' ) TOP USERDATA VISIBLE WEBCLASS WEBHEIGHT WEBLEFT WEBPOSITION WETOP WEBWIDTH WIDTH ZORDER Instructions: ACTIVATE CHECKPROP CREATE DEACTIVATE DESTROY EVENTREGISTER EVENTSEND GETPROP SETFOCUS SETPROP TYPE Events: $JQueryEvent Methods: DisableJqEvent //All PWS objects EnableJqEvent //All PWS objects Focus //HTMLCONTROL Only GetAttr //HTMLCONTROL Only GetCss //HTMLCONTROL Only GetWebId //All PWS objects GetWebStyle //All PWS objects InnerHtml //HTMLCONTROL Only MakePict //HTMLCONTROL Plbwin, Plbnet, Plbserve Only SetAttr //HTMLCONTROL Only SetCss //HTMLCONTROL Only SetWebStyle //All PWS objects UpdateEvents //HTMLCONTROL Only - In the PL/B Language Reference manual under the 'TYPE' instruction change the Note (2.) GUI Objects table to include the following objects: Note (2.) GUI Objects Table Data Type Sunbelt SWDBC Comment CLIENT 14640 (0x3930) 16 Added 9.7 RUNTIME 14896 (0x3A30) 16 Added 9.7 XDATA 15152 (0x3B30) 16 Added 9.8A HTMLCONTROL 15408 (0x3C30) 16 Added 10.0A - In the PL/B Language Reference manual, add a new section named 'ACTIVATE HTMLCONTROL' as follows: ACTIVATE HTMLCONTROL The ACTIVATE HTMLCONTROL statement makes a HTMLCONTROL visible and allows the user to interact with it. An optional execution label may be provided to process information if the user selects the HTMLCONTROL. The instruction uses the following format: [label] ACTIVATE {htmlctl}[,{routine},{result}] Where: label Optional. A Program Execution Label. htmlctl Required. The name of a previously created HTMLCONTROL object variable or a pointer to a HTMLCONTROL object. routine Optional. A program execution label called when an event occurs for a HTML element that exists within the screen boundaries of the HTMLCONTROL object. result Optional. A previously defined Numeric Variable in which value of zero is always returned. Flags Affected: NONE Note the following: 1. The runtime performs the action of registering the $jQueryEvent. See EventRegister for more information on $jQueryEvent. Also, the {routine} for this Activate and the {routine} for the EventRegister of the $jQueryEvent for this HTMLCONTROL are mutually exclusive. The means that the last {routine} registered for the $jQueryEvent of the HTMLCONTROL becomes the active {routine} which is used. 2. If the {result} operand is specified, it is set to a value of zero. 3. If the {result} operand is too small to contain the value, the OVER flag is set upon entry to the {routine}. Otherwise, the OVER flag is cleared. This flag setting does not occur at the time of the ACTIVATE but at the time the {routine} is called. 4. The {routine} is called when an event is produced by a HTML element that exists in the HTMLCONTROL object. 5. The {routine} is called as if a CALL instruction was performed. It is only called when an EVENTCHECK or EVENTWAIT is executed. 6. When the {routine} is complete, a RETURN instruction continues execution at the instruction following the EVENTWAIT or EVENTCHECK. Otherwise, a NORETURN instruction should be executed to clear the return address from the call stack. 7. If the HTMLCONTROL specified by an ACTIVATE instruction is already active, the old {routine} and {result} operands are replaced with the new {routine} and {result} operands. 8. An object must be CREATEd before it is activated. If this is not done, a runtime error of O105 is generated. 9. If insufficient memory is available to perform the operation, a runtime error O106 is generated. 10. If a FILEPI instruction is active, it is terminated. 11. When the {routine} is invoked, the EventInfo instruction can be used to retrieve addition data related to the $jQueryEvent. - In the PL/B Language Reference manual under the 'EVENTREGISTER' instruction, add a Note (24.) as follows: Note (24.) "When registering the $jQueryEvent for a HTMLCONTROL object, the EventRegister {routine} replaces a previously registered {routine} including the {routine} of an ACTIVATE for the HTMLCONTROL." - In the PL/B Language Reference manual under the 'Click Event' section, add a Note (11.) as follows: Note (11.) "For a BUTTON object click event, the event Modifier value identifies when a DEFAULT or CANCEL key action generates the click event. If the 'eventMod' value is 0x100, a DEFAULT key action generated the click event. If the 'eventMod' value is 0x200, a CANCEL key action generated the click event. Otherwise, 'eventMod' value is zero." - In the PL/B Language Reference manual under the 'DEFAULT Property' section, add a Note (7.) as follows: Note (7.) "When a DEFAULT key action generates the click event for a BUTTON object, the 'eventMod' value of 0x100 indicates that a DEFAULT key action generated the click event." - In the PL/B Language Reference manual under the 'CANCEL Property' section, add a Note (5.) as follows: Note (5.) "When a CANCEL key action generates the click event for a BUTTON object, the 'eventMod' value of 0x200 indicates that a CANCEL key action generated the click event." - In the PL/B Language Reference manual, add a new section named 'InnerHtml Property (HTMLCONTROL)' as follows: INNERHTML Property (HTMLCONTROL) The INNERHTML property allows user program HTML to be rendered into a HTMLCONTROL object. The user HTML data must be properly formatted HTML as expected by normal client browser engines. The property uses the following format: INNERHTML={htmlpage} Note the following: 1. The INNERHTML property can be used in CREATE, GETPROP, or SETPROP statements. 2. {htmlpage} must be a Character String Variable or literal that contains: A. Properly formatted HTML constructs. Simple Example: or B. A properly formatted URL that contains a leading '!' character. Simple Example: !http://www.google.com 3. The GETPROP operation retrieves the exact HTML {htmlstring} string rendered by the CREATE\SETPROP operation for the INNERHTML property of a HTMLCONTROL object. If the HTMLCONTROL object has been loaded using the 'InnerHtml' method, the GETPROP of the 'INNERHTML' property returns the HTML loaded by the 'InnerHtml' method. 4. If the HTMLCONTROL contains user HTML, another SETPROP 'INNERHTML' property operation replaces any previously loaded HTML existing in the HTMLCONTROL. 5. The HTMLCONTROL {htmlpage} data string can include the 'data-plbevent={eventnames}' attribute for a HTML object that is being declared in the HTML page data string. When the 'data-plbevent' is being used, the HTML object events can be only occur as follows: a. The 'data-plbevent={eventnames}' must be declared for each HTML object which is to generate an event. Where: {eventnames} This is a string of one or more JavaScript event names which must be separated by a whitespace character delimiter. See this URL Link for more information on events: https://developer.mozilla.org/en-US/docs/Web/Events The data-plbevent events for the Plbwin, Plbnet, and Plbserve runtimes are limited to: blur, change, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup b. The EVENTREGISTER must be executed to register the $JQueryEvent ( 200 event number ) event for a HTMLCONTROL object using the 'InnerHtml' property. In this case, the $JQueryEvent routine receives all of the HTML events declared by the 'data-plbevent' in the 'InnerHtml' property data string. The ARG1 contains a JSON object string for the event data. See the EVENTREGISTER for more details on the $JQueryEvent. Example of EventRegister Property: HTML object sample with 'data-plbevent' declared: HCtl HTMLCONTROL . HtmlPage INIT "" SETPROP HCtl, InnerHtml=HtmPage EventReg HCtl,$JQueryEvent,HctlEvent, ARG1=JsonData 6. The HTMLCONTROL {htmlpage} data string can include the data-plbenable='on' attribute for a HTML object that is being declared in the HTML page data string. When the 'data-plbenable' is being used, the PL/B ENABLED property is used to enable/disable those HTML objects. HTML object sample with 'data-plbenable' declared: 7. The HTMLCONTROL {htmlpage} data string can include the data-plbtabid={num} attribute for a HTML object that is being declared in the HTML page data string. When the 'data-plbtabid' is being used, the HTML objects are placed in the PL/B tabbing order as members of the HTMLCONTROL. A data-plbtabid of 0 causes the HTML object to be removed from the PL/B tabbing order. The HTML object sample with 'data-plbtabid' declared: 8. This property is implemented using the Windows OS 'IWebBrowser2' interface for the Windows PL/B runtimes. 9. This property behaves in the same manner as the HTMLCONTROL method with the default flags settings of 0. - In the PL/B Language Reference manual, modify the section named 'InnerHtml Method (PANEL)' as follows: InnerHtml Method (PANEL and HTMLCONTROL) The InnerHtml method sends a HTML page to a PANEL object that does not contain any GUI objects, or a HTMLCONTROL object. This method uses the following format: [label] {object}.InnerHtml [GIVING {return}]: USING [*Html=]{htmlpage}[: [*Flags=]{flags}] Where: label Optional. A Program Execution Label. object Required. A PANEL or HTMLCONTROL that is accessed. return Optional. A Numeric Variable that indicates the success or failure of the method. htmlpage Required. A Character String Variable or literal that contains the HTML page sent to the PANEL or HTMLCONTROL. flags Optional. A Numeric variable or decimal number whose value enforces specialized behaviors. Flags Affected: EOS, OVER, ZERO Note the following: 1. The EOS flag is always cleared. 2. The ZERO flag is set to TRUE when the return value is zero. A {return} value of zero indicates that the method executed successfully. 3. The OVER flag is set to TRUE if the {return} variable is too small to store that value without being truncated. 4. The 'InnerHtml' behavior flags are defined as follows: Value Meaning ... 0x00 When all of the {flags} bits are zero, the {htmlpage} data string is sent to the PANEL or HTMLCONTROL object exactly as provided. 0x01 Enable HTML events for any HTML objects in the InnerHtml {htmlpage} that has the HTML element data-plbevent='eventname' attribute defined. This flag is referenced as $HTML_HAS_EVENTS in the 'plbmeth.inc' definitions. This flag is only valid for the PANEL object, and is always on for the HTMLCONTROL object. This flag is not used when the $HTML_FROM_URL bit is used. 0x02 This bit value allows the {htmlpage} string to be specified as a valid 'url' reference. This bit value can be used in the Plbwin, Plbnet, Plbserve, and Plbwebsrv runtimes. This flag is referenced as $HTML_FROM_URL in the 'plbmeth.inc' definitions. 0x04 This bit value causes a vertical and horizontal scrollbar to be created for the PANEL or HTMLCONTROL object. This bit value is only supported in the Plbwin, Plbnet, and Plbserve runtimes. This flag is referenced as $HTML_USE_SCROLLBARS in the 'plbmeth.inc' definitions. 0x08 This bit value causes a border to be drawn around the PANEL or HTMLCONTROL object. This bit value is only supported in the Plbwin, Plbnet, and Plbserve runtimes. This flag is referenced as $HTML_3D_BORDER in the 'plbmeth.inc' definitions. 5. The InnerHtml method does not send the {htmlpage} data to the PANEL if the PANEL has PLB GUI child objects. In this case, the {return} value is one (1). 6. After the InnerHtml method has been successfully executed, PLB GUI objects can be added to the PANEL. 7. When the HTML data is loaded from a URL using the Plbwin, Plbnet, and Plbserve runtimes, the IE browser level support can be with a tag. This tag should be the first tag after the
tag and resemble the following line: This causes the latest version of IE to be used as the browser engine. 8. The PANEL or HTMLCONTROL {htmlpage} data string can include the 'data-plbevent={eventnames}' attribute for a HTML object that is being declared in the HTML page data string. When the 'data-plbevent' is being used, the HTML object events can be only occur as follows: a. The 'data-plbevent={eventnames}' must be declared for each HTML object which is to generate an event. Where: {eventnames} This is a string of one or more JavaScript event names which must be separated by a whitespace character delimiter. See this URL Link for more information on events: https://developer.mozilla.org/en-US/docs/Web/Events The data-plbevent events for the Plbwin, Plbnet, and Plbserve runtimes are limited to : blur, change, click, dblclick, focus, keydown, keypress, keyup, mousedown, mousemove, mouseout, mouseover, mouseup b. The EVENTREGISTER must be executed to register the $JQueryEvent ( 200 event number ) event for a PANEL or HTMLCONTROL {object} executing the 'InnerHtml' method. In this case, the $JQueryEvent routine receives all of the HTML events declared by the 'data-plbevent' in the 'InnerHtml' data string. The ARG1 contains a JSON object string for the event data. See the EVENTREGISTER for more details on the $JQueryEvent. Example of EventRegister Method: HTML object sample with 'data-plbevent' declared: EventRegister Required: EventReg Panel,$JQueryEvent,HctlEvent, ARG1=JsonData or EventReg Panel,200,PanelEvent,ARG1=JsonData 9. The HTMLCONTROL {htmlpage} data string can include the data-plbenable='on' attribute for a HTML object that is being declared in the HTML page data string. When the 'data-plbenable' is being used, the PL/B ENABLED property is used to enable/disable those HTML objects. HTML object sample with 'data-plbenable' declared: 10. The HTMLCONTROL {htmlpage} data string can include the data-plbtabid={num} attribute for a HTML object that is being declared in the HTML page data string. When the 'data-plbtabid' is being used, the HTML objects will be placed in the PL/B tabbing order as members of the HTMLCONTROL. A data-plbtabid of 0 causes the HTML object to be removed from the PL/B tabbing order. The HTML object sample with 'data-plbtabid' declared: 11. This method is implemented using the Windows OS 'IWebBrowser2' interface for the Windows PL/B runtimes. - In the PL/B Language Reference manual, add a new sections described for HTMLCONTROL methods as follows: -------------------------------------------------------------------- 'GetAttr Method (HTMLCONTROL)' The GetAttr method retrieves low level HTML element attributes. The method gets the requested data from the HTML element that has an id attribute that matches the id parameter. The method uses the following format: [label] {object}.GetAttr [GIVING {return}] USING [*Id=]{id}: [*Name=]{name}[: [*Flags=]{flags} Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been declared. return Optional. A Character String Variable that returns a string from a HTML element depending on the {name} data type. id Required. A Character String Variable or literal that contains HTML element id attribute. name Required. A Character String Variable or string literal that identifies the type of data to be retrieved from the HTML element. flags Optional. A Numeric Variable or decimal number that specifies a bit mask value that controls the behavior of this method. Flags Affected: EOS Note the following: 1. This method is used to retrieve an attribute value from a HTML element contained in a HTMLCONTROL object. 2. The EOS flag is set if the returned data string is larger than the DIM variable used to receive the data. 3. The {id} is a value that determines the HTML element used for data retrieval. The {id} string is matched against the id attribute of the HTML element. 4. The {name} identifies the type of data retrieved from the HTML element matching the {id} string. Information on HTML element attributes can be found at: https://www.w3schools.com/html/html_attributes.asp 5. The {name} parameter can be a pre-defined special name or it can be an HTML attribute for the HTML element being accessed. The pre-defined special name and the HTML attribute names are only returned when the current {flags} value is set to zero (0). Special Comment Html Html Contents Text Text Contents Class Class attribute {attr} A valid attribute name 6. The {flags} parameter is a bitmask value that forces specialized behaviors for the execution of this method. 7. The {return} string depends on the {name} data type being requested. Example of GetAttr Method: For a HTMLCONTROL that contains a HTML element as follows: This PL/B GetAttr method returns a value using the following instruction: HtmlControl.GetAttr Giving MyValue Using *ID="MyEdit": *NAME="maxlength" In this example, the HTML attribute named "maxlength" is retrieved from the HTML element with the id attribute of "MyEdit". The MyValue variable returns a string as follows: 10 -------------------------------------------------------------------- 'SetAttr Method (HTMLCONTROL)' The SetAttr method changes low level HTML element attributes. The method sets the requested attribute of the HTML element that has an id attribute that matches the id parameter. The method uses the following format: [label] {object}.SetAttr [GIVING {return}]: USING [*ID=]{id}: [*Name=]{name}: {*Value=]{value}[: [*Flags=]{flags}] Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been declared. return Optional. A Numeric variable that always returns zero. id Required. A Character String Variable or literal that contains HTML element id attribute. name Required. A Character String Variable or string literal that identifies the type of data to be changed in the HTML element. value Required. A Character String Variable or string literal that has the value string applied to the {name} data type. flags Optional. A Numeric Variable or decimal number that specifies a bit mask value that controls the behavior of this method. Flags Affected: OVER, ZERO Note the following: 1. This method is used to change an attribute value in a HTML element contained in a HTMLCONTROL object. 2. The ZERO flag is always set TRUE. 3. The OVER flag is always set FALSE. 4. The {id} is a value that determines the HTML element used for data changes. The {id} string is matched against the id attribute of the HTML element. 5. The {name} identifies the type of data changed in the HTML element matching the {id} string. Information on HTML element attributes can be found at: https://www.w3schools.com/html/html_attributes.asp 6. The {name} parameter can be a pre-defined special name or it can be a HTML attribute for the HTML element being accessed. The pre-defined special name and the HTML attribute names are only used when the current {flags} value is set to zero (0). Special Comment Html Html Contents Text Text Contents Class Class attribute {attr} A valid attribute name 7. The valid values for the {value} parameter depends on the {name} parameter used . 8. The {flags} parameter is a bitmask value that forces specialized behaviors for the execution of this method. 9. The {return} value will always be zero. Example of SetAttr Method: For a HTMLCONTROL that contains a HTML element as follows: This PL/B SetAttr method changes the "maxlength" data value using the following instruction: HtmlControl.SetAttr Using "MyEdit","maxlength","15" In this instruction, the HTML attribute named "maxlength" is changed to 15 in the HTML element with the id attribute of "MyEdit". -------------------------------------------------------------------- 'GetCss Method (HTMLCONTROL)' The GetCss method retrieves the style of a HTML element. The method gets the requested style data from the HTML element that has an id attribute that matches the id parameter. The method uses the following format: [label] {object}.GetCss [GIVING {return}] USING [*Id=]{id}: [*Name=]{name}[: [*Flags=]{flags}] Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been declared. return Optional. A Character String Variable that returns a string from a HTML element depending on the {name} data type. id Required. A Character String Variable or literal that contains HTML element id attribute. name Required. A Character String Variable or string literal that identifies the type of CSS style data to be retrieved from the HTML element. flags Optional. a Numeric Variable or decimal number that specifies a bit mask value that controls the behavior of this method. Flags Affected: EOS Note the following: 1. CSS is a language that describes the style of an HTML. This method is used to retrieve a style value from an HTML element contained in a HTMLCONTROL object. 2. The EOS flag is set if the returned data string is larger than the DIM variable used to receive the data. 3. The {id} is a value that determines the HTML element used for data retrieval. The {id} string is matched against the id attribute of the HTML element. 4. The {name} identifies the type of data retrieved from the HTML element matching the {id} string. Information on HTML element CSS style names can be found at: https://www.w3schools.com/css/ 5. The {name} parameter is limited under Windows to the following styles: background, backgroundAttachment, backgroundColor, backgroundImage, backgroundPosition, backgroundPositionX, backgroundPositionY, backgroundRepeat, border, borderBottom, borderBottomColor, borderBottomStyle, borderBottomWidth, borderCollapse, borderColor, borderLeft, borderLeftColor, borderLeftStyle, borderLeftWidth, borderRight, borderRightColor, borderRightStyle, borderRightWidth, borderStyle, borderTop, borderTopColor, borderTopStyle, borderTopWidth, borderWidth, bottom, clear, clip, color, cursor, direction, display, filter, font, fontFamily, fontSize, fontStyle, fontVariant, fontWeight, height, left, letterSpacing, lineBreak, lineHeight, listStyle, listStyleImage, listStylePosition, listStyleType, margin, marginBottom, marginLeft, marginRight, marginTop, maxHeight, maxWidthminHeight, minWidth, overflow, overflow, overflowX, padding, paddingBottom, paddingLeft, paddingRight, paddingTop, pageBreakAfte, pageBreakBefore, position, right, styleFloat, tableLayout, textAlign, textAlignLast, textDecoration, textIndent, textJustify, textOverflow, textTransform, top, unicodeBidi, verticalAlign, visibility, whiteSpace, width, wordBreak, wordSpacing, wordWrap, zIndex 6. If the {name} parameter is unsupported, invalid, or has never been set, an empty string can be returned. 7. The {flags} parameter is a bitmask value that forces specialized behaviors for the execution of this method. 8. The {return} string depends on the {name} data type being requested. Example of GetCss Method: HtmlControl.GetCss Giving MyValue Using "MyEdit","whiteSpace" In this example, the HTML CSS style named "whiteSpace" is retrieved from HTML element with the id attribute of "MyEdit". The MyValue variable returns a string as follows: pre -------------------------------------------------------------------- 'SetCss Method (HTMLCONTROL)' The SetCss method changes the style of an HTML element. The method sets the requested style of the HTML element that has an id attribute that matches the id parameter. The method uses the following format: [label] {object}.SetCss [GIVING {return}] USING [*Id=]{id}: [*Name=]{name}: {*Value=]{value}[: [*Flags=]{flags}] Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been declared. return Optional. A Numeric variable that always returns zero. id Required. A Character String Variable or literal that contains HTML element id attribute. name Required. A Character String Variable or string literal that identifies the type of CSS style to be changed in the HTML element. value Required. A Character String Variable or string literal that has the value string applied to the {name} data type. flags Optional. A Numeric Variable or decimal number that specifies a bit mask value that controls the behavior of this method. Flags Affected: OVER, ZERO Note the following: 1. CSS is a language that describes the style of an HTML. This method is used to set a style value of an HTML element contained in a HTMLCONTROL object. 2. The ZERO flag is always set TRUE. 3. The OVER flag is always set FALSE. 4. The {id} is a value that determines the HTML element used for data changed. The {id} string is matched against the id attribute of the HTML element. 5. The {name} identifies the style to be changed in the HTML element matching the {id} string. Information on HTML element CSS style names can be found at: https://www.w3schools.com/css/ 6. The {name} parameter is limited under Windows to the following styles: background, backgroundAttachment, backgroundColor, backgroundImage, backgroundPosition, backgroundPositionX, backgroundPositionY, backgroundRepeat, border, borderBottom, borderBottomColor, borderBottomStyle, borderBottomWidth, borderCollapse, borderColor, borderLeft, borderLeftColor, borderLeftStyle, borderLeftWidth, borderRight, borderRightColor, borderRightStyle, borderRightWidth, borderStyle, borderTop, borderTopColor, borderTopStyle, borderTopWidth, borderWidth, bottom, clear, clip, color, cursor, direction, display, filter, font, fontFamily, fontSize, fontStyle, fontVariant, fontWeight, height, left, letterSpacing, lineBreak, lineHeight, listStyle, listStyleImage, listStylePosition, listStyleType, margin, marginBottom, marginLeft, marginRight, marginTop, maxHeight, maxWidthminHeight, minWidth, overflow, overflow, overflowX, padding, paddingBottom, paddingLeft, paddingRight, paddingTop, pageBreakAfte, pageBreakBefore, position, right, styleFloat, tableLayout, textAlign, textAlignLast, textDecoration, textIndent, textJustify, textOverflow, textTransform, top, unicodeBidi, verticalAlign, visibility, whiteSpace, width, wordBreak, wordSpacing, wordWrap, zIndex 7. The valid values for the {value} parameter depends on the {name} parameter used. 8. The {flags} parameter is a bitmask value that forces specialized behaviors for the execution of this method. 9. The {return} value will always be zero. Example of SetCss Method: HtmlControl.SetCss Using "MyEdit", "whiteSpace", "pre" In this example, the HTML CSS style named "whiteSpace" is set to the value pre for the HTML element with the id attribute of MyEdit . -------------------------------------------------------------------- 'Focus Method (HTMLCONTROL)' The Focus method changes focus to a low level HTML element. The method sets the keyboard focus to the HTML element that has an id attribute that matches the id parameter. The method uses the following format: [label] {object}.Focus [GIVING {return}] USING [*Id=]{id}[: [*Flags=]{flags}] Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been declared. return Optional. A Numeric variable that always returns zero. id Required. A Character String Variable or literal that contains HTML element id attribute. flags Optional. A Numeric Variable or decimal number that specifies a bit mask value that controls the behavior of this method. Flags Affected: OVER, ZERO Note the following: 1. This method is used to change the keyboard focus to a HTML element contained in a HTMLCONTROL object. 2. The ZERO flag is always set TRUE. 3. The OVER flag is always set FALSE. 4. The {id} is a value that determines the HTML element that will receive the focus. The {id} string is matched against the id attribute of the HTML element. 5. The {flags} parameter is a bitmask value that forces specialized behaviors for the execution of this method. 6. The {return} value will always be zero. Example of Focus Method: HtmlControl.Focus Using "MyEdit" In this example, the focus is set to the HTML element with the id attribute of MyEdit -------------------------------------------------------------------- 'MakePict Method (HTMLCONTROL using Plbwin, Plbnet, Plbserve)' The MakePict method stores the contents of a HTMLCONTROL object into a PICT object. This method is only works using a Plbwin, Plbnet, or Plbserve runtime. The method uses the following format: [label] {object}.MakePict [GIVING {pict}] Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been declared. pict Optional. A PICT object that receives the current contents of a visible HTMLCONTROL object. Flags Affected: EOS, OVER, ZERO Note the following: 1. The {pict} object is destroyed before the new picture is stored. 2. The visible area of the HTMLCONTROL is stored as the image in the {pict} object. 3. The EOS, OVER, and ZERO flags are always cleared (i.e. FALSE). 4. The method does not transfer any data into the PICT return object when the HTMLCONTROL is not activated. If no data is retrieved, the PICT object is not created after the method is completed. The TEST or MOVE object to object instruction can be used to determine if the picture is created after the method is completed. 5. This method is not available when using the PL/B Web Server. -------------------------------------------------------------------- 'UpdateEvents Method (HTMLCONTROL)' The UpdateEvents method will scan the HTML data contained in a HTMLCONTROL and process all data-plbevent, data-plbenable, and data-plbtabid attributes. The method uses the following format: [label] {object}.UpdateEvents [GIVING {return}:] USING [[*Flags=]{flags}] Where: label Optional. A Program Execution Label. object Required. A HTMLCONTROL object that has been declared. return Optional. A Numeric variable that always returns zero. flags Optional. A Numeric Variable or decimal number that specifies a bit mask value that controls the behavior of this method. Flags Affected: OVER, ZERO Note the following: 1. This method is used to change the keyboard focus to a HTML element contained in a HTMLCONTROL object. 2. The ZERO flag is always set TRUE. 3. The OVER flag is always set FALSE. 4. This method will scan the HTML data contained in a HTMLCONTROL and process all data-plbevent, data-plbenable, and data-plbtabid attributes. This should be done after dynamically changing the HTML data for these attributes using the SetAttr method. 5. The {flags} parameter is a bitmask value that forces specialized behaviors for the execution of this method. 6. The {return} value will always be zero. Example of UpdateEvents Method: ................................................................ . This example shows how to add new HTML element can be added . to a HTMLCONTROL webpage using the pre-defined 'html' . attribute. . HtmlControl.SetAttr Using *ID="myDiv", *NAME= "html": *VALUE="