Date: 10-01-2012 Subject: RELEASE 9.6 Runtime Files These release notes pertain to the following programs or files: CLIWIN 9.6 01 Oct 2012 9,6,0,500 (ComCtl 6) CLINET 9.6 01 Oct 2012 9,6,0,500 (ComCtl 6) CLICON 9.6 01 Oct 2012 9,6,0,500 (ComCtl 6) PLBCON 9.6 01 Oct 2012 9,6,0,500 (ComCtl 6) PLBCONET 9.6 01 Oct 2012 9,6,0,500 (ComCtl 6) PLBNET 9.6 01 Oct 2012 9,6,0,500 (ComCtl 6) PLBSERVE 9.6 01 Oct 2012 9,6,0,500 PLBSERVET 9.6 01 Oct 2012 9,6,0,500 (Threaded Server) PLBWIN 9.6 01 Oct 2012 9,6,0,500 (ComCtl 6) CLIWIN5 9.6 01 Oct 2012 9,6,0,500 (ComCtl 5) CLINET5 9.6 01 Oct 2012 9,6,0,500 (ComCtl 5) CLICON5 9.6 01 Oct 2012 9,6,0,500 (ComCtl 5) PLBCON5 9.6 01 Oct 2012 9,6,0,500 (ComCtl 5) PLBCONET5 9.6 01 Oct 2012 9,6,0,500 (ComCtl 5) PLBNET5 9.6 01 Oct 2012 9,6,0,500 (ComCtl 5) PLBWIN5 9.6 01 Oct 2012 9,6,0,500 (ComCtl 5) PLBDSIGN 9.6 01 Oct 2012 9,6,0,500 EMBEDINI 9.6 01 Oct 2012 9,6,0,500 EMBEDINI64 9.6 01 Oct 2012 9,6,0,500 HEXDUMP 9.6 01 Oct 2012 9,6,0,500 HEXDUMP64 9.6 01 Oct 2012 9,6,0,500 MAKECLI 9.6 01 Oct 2012 9,6,0,500 MAKECON 9.6 01 Oct 2012 9,6,0,500 MAKECONET 9.6 01 Oct 2012 9,6,0,500 MAKEDEF 9.6 01 Oct 2012 9,6,0,500 MAKEMFD 9.6 01 Oct 2012 9,6,0,500 OBJMATCH 9.6 01 Oct 2012 9,6,0,500 OBJMATCH64 9.6 01 Oct 2012 9,6,0,500 SETGUID 9.6 01 Oct 2012 9,6,0,500 SUNAAMDX 9.6 01 Oct 2012 9,6,0,500 SUNAAMDX64 9.6 01 Oct 2012 9,6,0,500 SUNLS 9.6 01 Oct 2012 9,6,0,500 SUNMOD 9.6 01 Oct 2012 9,6,0,500 SUNMOD64 9.6 01 Oct 2012 9,6,0,500 SUNINDEX 9.6 01 Oct 2012 9,6,0,500 SUNINDEX64 9.6 01 Oct 2012 9,6,0,500 SUNSORT 9.6 01 Oct 2012 9,6,0,500 SUNSORT64 9.6 01 Oct 2012 9,6,0,500 ODSBAC32.DLL 9.6 01 Oct 2012 ODSBAC64.DLL 9.6 01 Oct 2012 PLBNETSUP.DLL 9.6 01 Oct 2012 9,6,0,500 Required for PLBNET PLBWSEC.DLL 9.6 01 Oct 2012 9,6,0,500 Req'd PLBWIN/PLBNET SA_DLL32.DLL 9.6 01 Oct 2012 9,6,0,500 SUNWADO.DLL 9.6 01 Oct 2012 9,6,0,500 SUNWADO25.DLL 9.6 01 Oct 2012 9,6,0,500 SUNWADO28.DLL 9.6 01 Oct 2012 9,6,0,500 SUNWODBC.DLL 9.6 01 Oct 2012 9,6,0,500 SUNWMSQL.DLL 9.6 01 Oct 2012 9,6,0,500 SUNWSRV.DLL 9.6 01 Oct 2012 9,6,0,500 SUNCS21.OCX 9.6 01 Oct 2012 PLBCMP.PLC 9.6 01 Oct 2012 PLBDBUG.PLC 9.6 01 Oct 2012 DESIGNER.PLC 9.6 01 Oct 2012 EDITOR.PLC 9.6 01 Oct 2012 SUNIDE.PLC 9.6 01 Oct 2012 SCHEMAEDITOR.PLC 9.6 01 Oct 2012 PROFILER.PLC 9.6 01 Oct 2012 DBGIFACE.PLC 9.6 01 Oct 2012 WATCH.PLC 9.6 01 Oct 2012 DBEXPLORER.PLC 9.6 01 Oct 2012 ADMEQU.INC 9.5A 01 Sep 2011 PLBEQU.INC 9.5B 30 Jan 2012 PLBMETH.INC 9.5A 01 Sep 2011 PLBCLI.ZIP 9.6 01 Oct 2012 9,6,0,600 (ComCtl 6) PLBRUN.ZIP 9.6 01 Oct 2012 9,6,0,600 (ComCtl 6) *============================================================================== Notes for some NEW Items: - PLB runtimes built for enhanced common controls version 6 that give newer program presentations and features. - Modified the PLB runtimes to allow Windows Ribbon support that requires a user generated Windows resource DLL. - Modified the runtimes to allow an AFILE READ operation to be aborted. This feature is being implemented such that an end-user can abort an AFILE READ that is taking an excessively long time before finding - New SETMODE Keywords AAMCANCELCHAR={svarslit} AAMCHECKTIME={nvarlit} PLBRETURNUNCNAME={dnumnvar} SUBTABFORENTER={dnumnvar} - New GETMODE Keywords AAMCANCELCHAR={svar} AAMCHECKTIME={nvar} ISCOMCTL6USED={nvar} PLBAAMCANCELCHAR={svar} PLBAAMCHECKTIME={nvar} PLBAAMCHECKTIME={nvar} PLBRETURNUNCNAME={nvar} RUNTIMEBYTEORDER={nvar} SUBTABFORENTER={nvar} - New GETFILE Keywords AAMCANCELCHAR={svar} AAMCANCELFLAG={nvar} AAMCHECKTIME={nvar} PRTBINCOUNT={nvar} PRTBINNAMES={svar] PRTBINTYPES={svar} - New HTTP Keywords HTTPAUTH={svarlit} - New Runtime Keywords PLB_ISI_CACHE= PLB_SUBTABFORENTER={on|off} - Drive substitution with user defined UNC mapping. *============================================================================== Notes for DOCUMENTATION: - In the 'TRAP' instruction and the 'Trap Events' notes found in the PL/B Language Reference manual, add a note (22.) as follows: 22. When executing a PL/B program using a GUI runtime, the keyboard events for the TRAP instruction including CHAR {char], F1-F40, FKEY, ESCAPE, and the special keys are only processed for KEYIN instructions. This means that the keyboard traps are only processed for the MAINWINDOW since it is the only WINDOW that supports the KEYIN instructions. Also, the keyboard event TRAPs do not get dispatched unless the MAINWINDOW has the focus to accept the Windows OS key stroke messages. - In the PL/B Language Reference manual, add a note for the *UNITS (PRTPAGE) section as follows: Note: 1. When a PRTOPEN instruction is first executed, the *UNITS {type} is set to '*CHARS' as the default. - In the PL/B Language Reference manual, for the GETINFO instruction change the description for the 'UNITS={unitid}' to include the following: "When the {unitid} value of CURRENT is being used for the TYPE={pfile} keyword, the current print positions found at offsets 230 and 238 in the returned data are returned as PIXEL values when the current units for the {pfile} is '*CHARS'." - In the PL/B Language Reference manual, change the note (5.) expression to be as follows: DestLen = ( ( ( SourceLength + 2 ) / 3 ) * 4 ) - In the PL/B Runtime Reference manual, change the following I97 subcode descriptions as follows: I97 Subcodes: 6 - Bad or missing sixth parameter. When opening a local serial communications port under Windows, the sixth parameter is optional and this subcode indicates a bad parameter value. 7 - Bad or missing seventh parameter when opening a Socket connection. When opening a local serial communications port under Windows, this subcode value indicates that the local serial port number is invalid or that the local serial port can not be opened. 8 - When opening a local serial communications port under Windows, this subcode value indicates that an error occurred trying to configure the local serial port after it was opened. 40 - COMFILE is not opened for a socket connection. 41 - COMFILE is not configured/initialized as a listening socket port. 42 - Socket error occurring when accepting an incoming connection attempt on a listening socket. - In the PL/B Runtime Reference, change the MAILSEND error descriptions for the subcode number 43 to read as follows: 43 - The mail logon authentication has failed. An authentication failure can occur when either the *USER or the *PASSWORD option is invalid. - In the PL/B Language Reference manual under the 'SQLIO Administrative Tables' section, add the following SQL data types to the Sun_Sqlio_Columns descriptions for the 'sql_type' column. Also, these same SQL types need to be added to the 'SQLIO Schema File Format' section. 13 - SQL_NCHAR_T This data type is an NCHAR SQL type where any trailing blank UTF16 characters are truncated. The NCHAR SQL type for the SQL Server specifies that the National Character Set is to be used and data is stored as UTF16 characters in the SQL tables. 14 - SQL_NCHAR This data type is an NCHAR SQL type for the SQL Server that specifies that the National Character Set is to be used and data is stored as UTF16 characters in the SQL tables. - In the PL/B Language Reference manual under SQLIO Limitations section, add the following note number (5.). "5. When using UTF16 data required for the SQL_NCHAR or SQL_NCHAR_T types in SQLIO PL/B IO instructions, the normal native disk I/O does not support UTF16 data." - In the PL/B Runtime Reference, change the description for the O124 as follows: O124 - Too many parameters have been specified for an object method or a WINAPI instruction. For the WINAPI instruction, any API function parameter type requiring an INT8 PLB data type counts as 2 parameters toward the maximum of 20 parameters supported. - Add the following error codes to the HTTP instruction. Code Error 25 Unable to create the file specified by the *FILENAME parameter. 26 The or parameter substitution failed for the HTTP *FILENAME parameter. 27 The or parameter substitution failed for the HTTP *HTTPAUTH parameter. 28 There is no HTTP header when a raw result is not being used as specified in the *FLAGS definitions. - In the PL/B Runtime Reference manual, add the following note to the Click Event section: 8. The Click event for a WINDOW object occurs when a click action occurs for a ribbon element that exists for the current ribbon on a Window. The result value that is returned with this event contains an ID value that is assigned to the ribbon element in a ribbon resource DLL. See the ribbon overview for a description about ribbon support that is available. - In the PL/B Runtime Reference manual, change the Note 7 table for the PRTOPEN instruction to read as follows: "SPOOFILE={value}" *============================================================================== The following files have been changed as noted: ------------------------------------------------------------------------------- PLBSERVE - Added a new command option named '-w[n]' that can be specified before other commands to identify the number of seconds to wait before exiting the Application Server. The '-w' option must be specified after a INI file if it is used and before other command options. If the [n] wait value is not specified, the '-w' command waits 3 seconds as the default. Format: plbserve [ini name] [-w[n]] - - Corrected a problem that could cause a program to hang indefinitely. This problem might occur using some client workstations and yet it would not occur on other client workstations. The following conditions could cause this hanging scenario: 1. The application had a MODAL dialog active. 2. The application was generating/processing FAST events while the MODAL dialog was active. 3. The timing for the generation and processing of Windows OS messages occurred such that two client messages were processed back to back. 4. The TCP/IP socket protocol would combine two client socket messages into a single socket message. 5. The application would hang. This problem was very difficult to reproduce unless the conditions and timing were just right. That is why the problem might never occur using some client workstations and yet might occur on another client workstation. ------------------------------------------------------------------------------- PLBCLIENT, PLBCLICON, PLBCLINET - Modified the CLICK event processing for a LISTVIEW object to detect a behavior where the Windows OS LISTVIEW control could stop generating click event messages. There is no explanation as to the sequence of program actions that can cause this odd behavior for the plbclient. The appropriate Windows mouse messages are being generated by the OS and yet the Windows OS LISTVIEW control is not properly processing the mouse messages to generate a click message. Therefore, when the PLBCLIENT event processing for the Sunbelt LISTVIEW detects this odd behavior, the LISTVIEW object is disabled and re-enabled to clear the odd behavior. This change is being implemented to work around a problem where a end-user would click on a LISTVIEW and nothing was happening. - Modified to support the AAM Cancel character mode for an AFILE READ operation. Both the PLBSERVE server and the client modules must be a version 9.6 or later in order for the AAM Cancel character action to work as expected. - Modified to prevent a GPF error from occurring when a client module attempted to logon to an unknown URL/IP address that returned a message with unknown/invalid data. ------------------------------------------------------------------------------- PLBCLIENT, PLBCLINET - Corrected a problem where the 'GetPageCount' would return the wrong value of 1 after a PICT image had been cached at the client workstation. Please note, that the client workstation cache MUST be cleared before this corrective change can take affect. Otherwise, the wrong value of 1 can be returned until the case is cleared and cached PICT image is cached again with the proper information. - Corrected an issue with losing a MENU event after the MENU was left down when a keepalive timeout occurred. This lost MENU event could occur during any time period from 1 to more than 30 seconds depending on when the MENU was dropped down. ------------------------------------------------------------------------------- PLBSERVE, PLBCLIENT, PLBCLICON, PLBCLINET - Modified to lower the required version level for the AddButton method of a TOOLBAR object, the AddPanel method of a STATUSBAR object, and the SetItemTextAll method of a LISTVIEW object. This eliminates unexpected O125 errors that could occur when an older version of a PLBCLIENT was accessing a new version of a PLBSERVE Application Server. ------------------------------------------------------------------------------- PLBWIN, PLBNET - Modified the COMOPEN instruction to report the Windows error code as an extended error when a local serial communications port can not be opened. - Modified the '.GPF' report file data to include the Windows OS version information and a memory map of the DLLs being used at the time the GPF error occurs. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, PLB(UNIX) - Modified the runtimes to allow an AFILE READ operation to be aborted. This feature is being implemented such that an end-user can abort an AFILE READ that is taking an excessively long time before finding a record. By default, the runtimes do not allow an AFILE READ to be aborted. This ability to abort an AFILE READ can be enabled using a new keyword named PLB_AAMCANCELCHAR keyword in a runtime INI file or by using the SETMODE *AAMCANCELCHAR instruction. If an AFILE READ is aborted by using the AAM Cancel character/key, the OVER flag is set to a TRUE state. There is a new GETFILE AAMCANCELFLAG keyword that retrieves an AAM Cancel character/key flag that indicates whether the AFILE READ was aborted or not. Also, note that there are new keywords for the AFILE OPEN and PREP instructions that can allow individual AFILE variables to invoke the use of the AAM Cancel character support. Note: 1. The AAM Cancel support must be enabled before the OPEN/PREP action of an AFILE variable. When the AFILE is opened or prepared the current AAM Cancel support is enabled for the AFILE accessing an AAM file. Changing the runtime AFILE READ default settings after an AFILE is opened does not change the AFILE AAM Cancel support being used. 2. The CHAIN instruction resets to current program AAM Cancel character value back to the default setting specified by the PLB_AAMCANCELCHAR INI keyword. - Added two new keywords named that set default settings to be used for the AAM Cancel support that has been implemented. The new keywords are defined as follows: PLB_AAMCANCELCHAR={abortkey} This keyword is used to define a default character or function key that can be used to abort/cancel a READ operation for an AFILE. When this keyword is specified, the runtime READ AFILE operations automatically enable the abort/cancel support for an AFILE READ instruction. If this keyword is not specified, the default behavior of the runtimes does not allow an AFILE READ to be aborted/canceled. Note, that the SETMODE *AAMCANCELCHAR keyword can be used to enable the AFILE READ abort/cancel mode for a specific program that is executing. Where: {abortkey} This parameter can be specified as a single key for a character such as A, B, C,... etc. Also, this parameter can be specified as a key name that identifies a key to be used like ESC, F1, F2,...etc. The following key names are supported for the {abortkey} parameter: ESC, ESCAPE, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32, F33, F34, F35, F36, F37, F38, F39, F40, UP, DOWN, LEFT, RIGHT, INS, INSERT, DEL, DELETE, HOME, PGUP, PAGEUP, PGDN, PAGEDOWN, END Example: PLB_AAMCANCELCHAR=a PLB_AAMCANCELCHAR=F3 PLB_AAMCANCELCHAR=ESC PLB_AAMCANCELCHAR=ESCAPE PLB_AAMCHECKTIME={seconds} This keyword is used to define the default a value in seconds that is used as the elapse time before checking for an AFILE READ abort/cancel character. The number of seconds specified for this keyword must be in the range from 0 to 30 seconds. This keyword setting is only used when the AFILE READ abort action is enabled by the PLB_AAMCANCELCHAR keyword or the SETMODE *AAMCANCELCHAR instruction. If this keyword is not specified, the runtimes use a default of 2 seconds while the Application Server clients and Data Manager uses 5 seconds as the default. Where: {seconds} This parameter must be specified from 0 to 30 seconds. If the specified value is greater than 30 seconds, the value is reset to be 30 seconds. Example: PLB_AAMCHECKTIME=1 PLB_AAMCHECKTIME=5 - Modified the SETMODE instruction to support new keywords that can be used to change the current default settings for the AAM Cancel character support. The new keywords are defined as follows: AAMCANCELCHAR={svarslit} This keyword can be used in the SETMODE instruction to change the current default AAM Cancel character to be used for aborting an AFILE READ instruction. This keyword only changes the AAM Cancel character setting for the current program and load modules that are being used. The {svarslit} identifier is the same as described by the PLB_AAMCANCELCHAR INI keyword. After the SETMODE *AAMCANCELCHAR is changed, the new setting only takes affect for an AFILE when the file variable is re-opened or prepared. A SETMODE *AAMCANCELCHAR change does not affect any AFILE variables that are already opened/prepared when the change was made. AAMCHECKTIME={nvarlit} This keyword can be used in the SETMODE instruction to change the current default AAM check time value specified in seconds. This keyword only changes the AAM check time setting for the current program and load modules that are being used. The {nvarlit} value is the same as described by the PLB_AAMCHECKTIME INI keyword. After the SETMODE *AAMCHECKTIME is changed, the new setting only takes affect for an AFILE when the file variable is re-opened or prepared. A SETMODE *AAMCHECKTIME change does not affect any AFILE variables that are already opened/prepared when the change was made. - Modified the GETMODE instruction to support new keywords that can be used to retrieve the current default settings for the AAM Cancel character support. The new keywords are defined as follows: PLBAAMCANCELCHAR={svar} This keyword returns the current default setting used for the AAM Cancel character support by a runtime. The {svar} variable is set to the AAM Cancel characters as described in the PLB_AAMCANCELCHAR INI keyword setting. If the AAM Cancel character support is not being used, the {svar} variable is set to be NULL. PLBAAMCHECKTIME={nvar} This keyword returns the current default setting used for the check time in seconds that is being used for the AAM Cancel character support by a runtime. The [nvar} variable returns a value as described in the PLB_AAMCHECKTIME INI keyword setting. The returned value should be from 0 to 30 seconds. AAMCANCELCHAR={svar} This keyword returns the default setting that is being used for the current PLB program and load modules. The value set into the {svar} variable is the same as described for the PLB_AAMCANCELCHAR INI keyword. If the AAM Cancel character support is currently disabled, the {svar} is set to be NULL. Also, this program default setting is reset to the runtime default setting after a CHAIN instruction is executed. AAMCHECKTIME={nvar} This keyword returns the default setting that is being used for the current PLB program and load modules. The value set into the {nvar} variable is the same as described for the PLB_AAMCHECKTIME INI keyword. Also, this program default setting is reset to the runtime default setting after a CHAIN instruction is executed. - Added two new keywords for an OPEN/PREPARE instruction of an AFILE variable. The following keywords can be used to enable the AAM Cancel character support for an individual AFILE variable. CANCELCHAR={svarslit] This keyword specifies the AAM Cancel character that is to be used to abort an AFILE READ operation. The {svarslit} can be specified using the same character and key names as specified for the PLB_AAMCANCELCHAR INI keyword. If the {svarslit} is specified as a NULL variable or literal, the AAM Cancel character support is disabled for this AFILE variable. If this keyword is not specified the AAM Cancel character feature is determined by the current program/runtime default settings. CHECKTIME={nvar} This keyword specifies the elapse time in seconds that to be used when checking for abort character/key for an AFILE READ. The {nvar} value is the same as described for the PLB_AAMCHEKCTIME INI keyword. If this keyword is not specified the AAM Cancel character feature is determined by the current program/runtime default settings. Example: AFILE AFILE F1 INIT "F1" . OPEN AFILE, "aamfile", AAMCANCELCHAR="ESC": AAMCHECKTIME=1 . PREP AFILE, "txtfile", "aamfile", AAMCANCEL=F1: AAMCHECKTIME=0 - Modified the GETFILE instruction to support new keywords that can be used to return the current AAM Cancel character settings being used for a specific AFILE variable. The new keywords are defined as follows: AAMCANCELCHAR={svar} This keyword for a GETFILE instruction returns the current setting being used for the AAM Cancel character support as applied for the specified AFILE variable. If the AAM Cancel character is not being used, the {svar} variable is set to be NULL. Otherwise, the {svar} is set to the character or key name as specified by the PLB_AAMCANCELCHAR INI keyword. AAMCHECKTIME={nvar} This keyword for a GETFILE instruction returns the current setting being used for the AAM Cancel character support as applied for the specified AFILE variable. The returned value is the same as described for the PLB_AAMCHECKTIME INI keyword. AAMCANCELFLAG={nvar} This keyword returns the a flag value of 0 or 1 depending on whether the last AFILE READ operation was aborted using an AAM Cancel character. The value of 1 indicates that an AFILE READ was terminated by an AAM Cancel character. This flag continues to persist until the next AFILE READ operation. - Added a new keyword named '*RUNTIMEBYTEORDER={nvar}' to the GETMODE instruction. This keyword returns the byte order of the platform that is executing the PL/B runtime. The returned values are defined as follows: Value Comment 0 Runtime does not have this keyword implemented. 1 Runtime is executed on a reverse byte ordered platform. 2 Runtime is executed on a forward byte ordered platform. - Modified the HTTP instruction to support a new input keyword named '*HTTPAUTH={svarlit}'. This keyword must contain the 'username' and 'password' packed into the {svarlit} with a ':' delimiter. Therefore, the {svarlit} data is formatted as 'username:password'. The HTTPAUTH data is put into the HTTP message as input provided as a HTTP Basic Authentication record. Note: The HTTPAUTH keyword ONLY takes affect and sends an AUTHORIZATION header field when the {flags} bit definition specifies the HTTP/1.1 protocol type and raw mode is not being used. Example: xFlags INTEGER 4,"0x00000010" HTTP HostName, ResourcePath, *Flags=xFlags: *Result=Response: *HTTPAUTH="myuser:mypassword" - Modified the FILTER instruction expressions to allow the data from a left operand that is a column/field name to be compared as a string to the data from a right operand that is a column/field name. In this case, the data from the right operand is retrieved and a string comparison is performed to the data of the left operand up to the size of the smallest operand. Note: 1. String comparisons for the FILTER instruction are performed as follows: a. The '=' operator can only evaluate to a true state when the size of the data for the left and right operands are the same and the data for the operands is the same. b. When the left and right operands have the same size, the true state for the '<' and '>' operators are evaluated by a character to character comparison of the data in the two operands. c. If the size of the left operand is less than the size of the right operand and the data in the two operands is the same, a '<' operator comparison evaluates to a true state. d. If the size of the left operand is greater than the size of the right operand and the data in the two operands is the same, a '>' operator comparison evaluates to a true state. e. The NOCASE operator can be used to eliminate case sensitivity when comparing each character of the left operand to the characters in the right operand. Example: A FILE ... FILTER A, "PRICESOLD != STANDARDPRICE" .... . .... . This read returns a record where the PRICESOLD field in . a record does not match the STANDARDPRICE field in the . same record. . READ A, SEQ;DATA .... - Added a new runtime keyword named 'PLB_ISI_CACHE=' for the runtimes. This keyword can be used to cause the PLB runtimes to cache ISI sectors. Use of this keyword can help to reduce OS IO read operations when accessing ISI files that are not being modified. PLB_ISI_CACHE= When this keyword is specified in the PLBWIN INI/UET, the ISI sector caching is enabled. The ISI caching is a way to reduce OS IO operations when reading the ISI tree structure. By default the ISI caching is turned OFF when the runtime starts which is the same as setting the value to zero. When this keyword is specified, the defines the default cache size to be used for every IFILE that is opened in a PLB program. The value can be specified in the range from 0 to 200. - Modified the runtimes to give an O124 error when a WINAPI or APICALL instruction is executed with too many parameters. The number of WINAPI/APICALL parameters is limited to 20. Also, the O124 error description has been changed as follows: O124 - Too many parameters have been specified for an object method or a WINAPI instruction. - Added a new GETMODE keyword named 'ISCOMCTL6USED={nvar}' that returns either a 0 or 1 value. If the returned value is a 1, the PLB runtime has been created with Windows COMCTL 6 support. Otherwise, the PLB runtime does not have COMCTL 6 support. - Modified the MODE bit definitions of the OPEN and PREP instructions for AFILE, FILE, and IFILE file variables to support a CMP_DONOTUSEIP bit definition. The MODE bit definitions have been changed as follows: CMP_RESERVED_1 0x00020000 CMP_RESERVED_2 0x00040000 CMP_RESERVED_3 0x00080000 DO NOT USE. Reserved for future use. CMP_DONOTUSEIP 0x00100000 This bit definition indicates that the AFILE, FILE, or IFILE file variable is to ignore the PLB_OPENUSEIP and PLB_PREPUSEIP keywords. Also, this bit definition indicates that a '|' redirection character in a file name is to be ignored. Note: The CMP_DONOTUSEIP gives the PLB application the flexibility to allow individual file variables to always be processed local to a client with minimal changes to the application while other file variables are generically being redirected to a Data Manager. - Corrected a problem where the READKS instruction would set the OVER flag erroneously when the previous READKS instruction encountered a FORMAT error that was trapped and ignored by a PL/B application. - Modified the READKP instruction to cause the OVER flag to be set for subsequent READKP instructions after an IO error for the ISI file occurs and is trapped/ignored by the PL/B application. - Corrected a problem where the READKEY would return an unexpected result after a READKS or READKP instruction caused the OVER flag to be set because there are no more keys to be found in the ISI tree. In this case, the READKEY should return a NULL variable result. - Corrected an issue where a blank key on an IFILE READ was not being set to a 0 value for SQL numeric fields when using SQLIO. This problem would cause an unexpected I86 error for the IFILE READ when using SQLIO. - Corrected a problem where an unexpected I86 subcode 5 error could occur when a FILEPI instruction was executed for a file variable that was opened for SQLIO operations. - Corrected a problem where the EXPLODE/IMPLODE instructions were not setting a result variable when it was an INTEGER type. - Corrected a problem where the return field count was 1 count too small when the last character in the source variable was the delimiter character and the number of destination variables was greater than the number of delimiters in the source variable. - Corrected a problem for SQLIO where a 'DELETE IFILE' instruction without a key parameter that followed a READKS instruction was not executing as expected. In this case, the expected result was that the 'DELETE IFILE' instruction would delete the last record/row read by the READKS instruction. - Corrected a problem for SQLIO where the date, time, and datetime data types were not being properly used in the SQL statements to perform the PLB IO operations. Before this correction was implemented, unexpected SQLIO results would occur when date, time, or datetime data fields was being used. - Corrected a problem where a SHUTDOWN with a command variable was causing a GPF error to occur when the command variable was a DIM pointer that was dynamically created. - Corrected an I85 subcode 104 error that would occur if a FILTER expression numeric value started with a period character. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE (Windows) - Modified the Windows runtimes to allow a drive specification in all PLB filenames to be substituted with a user assigned string. This support is implemented as a straight string for string substitution where the runtime does not interpret or format the filename string as the substitution is performed. However, after the substitution is performed, a double path delimiter string (ie "\\") is replaced with a single path delimiter (ie "\"). The drive substitution is enabled by including a new section named [SubstDrives] in the runtime '.ini' configuration file. The [SubstDrives] includes any MSDOS drive specifications to be substituted as PLB instructions process the filename. The following drive substitution assignments are all valid: [SubstDrives] l:=q: m:=r:\mydir\ x:=\\computername\share\ y:=\\computername\share\somedir\ Example: X FILE .... . Drive substitution to change drive letter only . OPEN X, "l:\somedir\datafile.txt" -->Opens "q:\somedir\datafile.txt" .... . Drive substitution to redirect to a UNC share format . OPEN X, "x:filename.txt" -->Opens "\\computername\share\filename.txt" .... . Drive substitution to redirect to a UNC share format . OPEN X, "m:\datadir\datafile.txt" -->Opens "r:\mydir\datadir\datafile.txt" . Note: 1. The drive substitution is supported for the PATH instruction using the CHANGE, CREATE, CURRENT, DELETE, and EXIST keywords. 2. When using the UNC naming convention, the Windows OS can only identify and maintain one current working directory unlike the DOS drive directory mapping. Therefore, when a UNC name is used for a PATH CHANGE keyword, only the current working directory for the runtime process can be changed. Using the UNC naming convention, there is no directory mapping history maintained by the Windows OS like the DOS drive mapping history. 3. By default, the instructions GETFILE, PATH CURRENT, and FINDFILE have been implemented to return the mapped drive letter when the UNC name matches one of the mapped drives. 4. A new keyword named 'PLB_RETURNUNCNAME={1|0}' has been added. This keyword can be added to the [SubstDrives] section to set the default path format to be used when returning path information for the GETFILE, PATH CURRENT, and FINDFILE instructions. If this keyword is not used, the default action is to return path information using the drive letter format. If this keyword is specified with a value of 1, the affected instructions return the path information using the UNC naming format. Otherwise, the path information is returned using a drive letter format. Note: The 'PLB_RETURNUNCNAME={1|0}' keyword must be placed in the [SubstDrives] section of the runtime INI file to take affect. This keyword only takes affect when the [SubstDrives] section is being used. 5. The GETMODE/SETMODE instructions have been modified to support a keyword named 'PLBRETURNUNCNAME={dnumnvar}'. This keyword is available to inquire and modify the default behavior for the GETFILE, PATH CURRENT, and FINDFILE instructions as described for the 'PLB_RETURNUNCNAME' runtime keyword. - Added 3 new keywords to the GETFILE instruction to retrieve PFILE information about bins for a Windows printer. The new keywords are defined as follows: PRTBINCOUNT={nvar} This keyword returns the number of bins available for a Windows printer that is opened using a PFILE. PRTBINTYPES={svar} This keyword returns the bin types that are available for a Windows printer that is opened using a PFILE. The types are packed into the {svar} variable as decimal numbers that are separated with a ';' character. PRTBINNAMES={svar} This keyword returns the bin names that are available for a Windows printer that is opened using a PFILE. The bin names are packed into the {svar} variable with a ';' character separating each bin name. - Modified SQLIO access to the SQL Server database engine to support the SQL data type of NCHAR which is identified as the National Character Set. For SQL Server, the NCHAR SQL data type is stored in the database tables as UTF16. For PL/B SQLIO, two new SQL data types have been added as follows: 13 - SQL_NCHAR_T This data type is an NCHAR SQL type where any trailing blank UTF16 characters are truncated. The NCHAR SQL type for the SQL Server specifies that the National Character Set is to be used and data is stored as UTF16 characters in the SQL tables. 14 - SQL_NCHAR This data type is an NCHAR SQL type for the SQL Server that specifies that the National Character Set is to be used and data is stored as UTF16 characters in the SQL tables. Note: 1. The SQL NCHAR and NCHAR_T data types are being implemented to allow data using national characters sets (like Hebrew) to be stored and retrieved from the SQL tables using PL/B READ and WRITE instructions. 2. When the SQL NCHAR or NCHAR_T data type is specified for a column, the field/variable data to be written by a PL/B WRITE operation MUST be given as UTF16 characters. In this case, all data MUST be 2 bytes for each character. e.g. A 10 character NCHAR field requires a DIM size of 20 bytes. 3. When an NCHAR or NCHAR_T data field is being retrieved using a SQLIO READ instruction, the *ABSON MUST be used. In this case, the SQL NCHAR data is stored into the PL/B DIM variables as UTF16 data. The actual data transferred from the record into and back from the SQL table column with an NCHAR/NCHAR_T is not modified in any way. Therefore, the NCHAR/NCHAR_T fields must be read using the *ABSON control to insure the UTF16 is unchanged when it is stored into a DIM variable. 4. When declaring an NCHAR or NCHAR_T SQL type in the schema definitions, the data size must be specified as the PL/B DIM size required to hold all of the 2 byte UTF16 characters. This means that a DIM size of 10 characters is required for 5 NCHAR characters stored as UTF16 characters. Thus, schema definition size for a SQL NCHAR/NCHAR_T must be specified as a multiple of 2. e.g. The NCHAR schema size is 10 characters that is required for a DIM variable size that is used to hold 5 UTF16 characters. 5. ISAM PL/B instructions are supported when using the SQL NCHAR and NCHAR_T data types. 6. When using the NCHAR/NCHAR_T SQL types, the following errors can occur as follows: I86 subcode 24 The filed size of a SQL_NCHAR or SQL_NCHAR_T column is not a multiple of 2 when the schema column is created. I86 subcode 44 A file with a SQL_NCHAR_T or SQL_NCHAR column is opened or prepared on an unsupported driver. The National character set support is not available on all database engines. I86 subcode 45 An AAM file with a SQL_NCHAR_T or SQL_NCHAR column in the key specification is opened or prepared. The AAM key specifications can not include a field/column using these data types. 7. When using the SQL_NCHAR or SQL_NCHAR_T data type, the following limitations are defined: a. Only the SQL SERVER is supported. An I86 subcode 44 error will occur for SQLite and MySQL database engines using these data types. b. New Sunbelt DBFILE drivers are required to support these SQL data types. The sunwado.dll and sunwodbc.dll drivers have been modified to support these SQL data types. c. The new SQL types cannot be used in AAM key specifications. d. Any PL/B instructions that are used for SQLIO operations to process data for these data types can not be used for non-SQLIO operations (ie native disk I/O). This means that normal native disk I/O does not support UTF16 data required by the SQL_NCHAR and SQL_NCHAR_T data types. - Modified SQLIO to give an I86 subcode 46 error when the SQL_IDENTITY type is specified for and the is not set to be unique in the Sun_Sqlio_Columns system table. This change is being made to insure proper operations when a user is specifying a data column to be used in place of the 'sun_recno' column that MUST be unique. - Modified the CONVERTUTF instruction to support conversions that allow PLB multi-byte string conversions to/from wide character (ie 16 bit character values) format when using a Windows codepage. The codepage support is ONLY allowed when using a Windows runtime. Otherwise, an error occurs. The wide character conversions can be invoked when the {type} conversion type is set to a value of 12 or 13. Also, notice that a codepage value can be embedded in {type} value when using the conversion types of 12 and 13. Note: 5. The following conversion status/error table is modified to include the following: String Meaning T10 Invalid codepage value specified. The codepage value must be a value larger than 400 and less than 65536. T11 Unable to execute the multi-byte to wide character conversion because an OS error occurred. Verify the source parameter string format. T12 Unable to execute the wide character to multi-byte conversion because an OS error occurred. Verify the source parameter string format. T13 Codepage values are not supported by the runtime being executed. 6. The conversion types 12 and 13 are added to the type table as follows: Type Value Conversion Action 12 PLB multi-byte string to wide character string Windows ONLY! The {type} can optionally include a Windows Codepage value greater than 400. 13 Wide character string to PLB multi-byte string. Windows ONLY! The {type} can optionally include a Windows Codepage value greater than 400. 7. A PLB multi-byte string is composed of 8-bit bytes that are found in a DIM variable type. The interpretation and/or presentation of the multi-byte bytes depends on the Windows environment where the PLB runtime is being executed. The Windows APIs named 'MultiByteToWideChar' and 'WideCharToMultiByte' can be reviewed for more details. 8. A wide character is composed of 2 bytes in a DIM variable that is formatted as a UTF-16 character. The Windows APIs named 'MultiByteToWideChar' and 'WideCharToMultiByte' can be reviewed for more details. 9. When using the conversion types of 12 or 13, the {type} parameter can be formatted to include a Windows Codepage identifier. When a Windows Codepage identified is not specified, the conversion defaults to the Windows ANSI code page. Otherwise, the Windows Codepage value must be greater than 400 and less then 65536. When a Codepage value is included in the {type} parameter value, it must be offset by a decimal factor of 100 with the following format expected: Format: {type} = ( {codepage} * 100 ) + {typevalue} Where: {codepage} - Windows codepage identifier. Value must be greater than 400 and less than 65536. See Windows documentation for details on valid codepage values. For example: 1252 - Windows-1252 is described as: "ANSI Latin 1; Western European (Windows)" 1255 - Windows-1255 is described as: "ANSI Hebrew; Hebrew (Windows)" {typevalue} - The normal conversion values defined for the CONVERTUTF instruction. The values are limited to 00 to 99. Example: TYPE12 FORM "125512" ;Use codepage value 1255 with ;the conversion type 12. TYPE13 FORM "125513" ;Use codepage value 1255 with ;the conversion type 13. TYPEXX FORM 10 ;Calculate codepage + type MOVE ( ( 1255 * 100 ) + 12 ), TYPEXX - Corrected a problem for SQLIO where a SQL_DATETIME mask was not being used as a default to format the data for a SQL_DATETIME field. - Corrected a problem for SQLIO using the SQL Server database engine where the data being READ for a SQL_DATETIME field was not being formatted properly. - Modified to work around a problem where the PATH CURRENT could cause a GPF error when accessing a network drive that was not available. ------------------------------------------------------------------------------- PLBWIN, PLBNET, PLBSERVE, ALL GUI CLIENTS - Modified the runtime error dialogs to include more information about the error. The runtime/client user serial number, the PLC program name, and PLC version are now included. - Added a new method named MouseWheelMode for a WINDOW object to allow mouse wheel behavior to be set for the Sunbelt mode (default) or the Windows mode. ............................................................... . MouseWheelMode Method . The MouseWheelMode method allows the mouse wheel behavior to be set to a Sunbelt mode or to a Windows mode. The Sunbelt mode allows some of the PLB GUI objects that do not have the focus to be scrolled using mouse wheel when the mouse is located on the non-focused object. When the mode is set to the Windows mode, the GUI object on a WINDOW that has the focus is scrolled when the mouse is located over other non-focused objects. The method uses the following format: [label] {object}.MouseWheelMode [GIVING {return}]: USING [*Value=]{mode} Where: {label} is an optional Program Execution Label. {object} is a required WINDOW object to be accessed. {return} is an optional Numeric Variable that indicates the current mousewheel mode after this method has been set. {mode} is a required Numeric Variable or decimal number that specifies the mousewheel mode to be set. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to a TRUE state when the method return value is zero. Otherwise, the ZERO flag is cleared. 2. The OVER flag is set if the returned value is two large for {return} variable. 3. When the {mode} value is 0, the mousewheel mode is set to a Sunbelt behavior where a GUI object can be scrolled without having the focus. This Sunbelt mode is the default behavior and occurs when a mousewheel action occurs while the mouse is located over one of the following GUI objects: ListView EditText that has scroll bars. RichEditText has scroll bars. COMBOBOX SLIDER TREEVIEW DATALIST 4. When the {mode} value is 1, the mousewheel mode is set to a Windows behavior where the GUI object with the focus is scrolled as mousewheel actions occur and the mouse is located over GUI objects other than the focused object. 5. The WINDOW and PANEL objects always execute using the Sunbelt mousewheel behavior when the AUTOSCROLL property is enabled for these objects. - Modified the runtimes to allow a 'LPTn:' to be opened as a printer port on a system where the 'LPTn:' has been redirected to a local/network printer device. This change attempts to minimize/eliminate S10 errors when the 'LPTn:' printer port has been redirected. - Added a new keyword named '*SUBTABFORENTER={nvar}' to the GETMODE/SETMODE instructions. This keyword is used to invoke a behavior to substitute a TAB character for an ENTER key when the focus is currently on a CHECKBOX, COMBOBOX, or RADIO object. This behavior applies to any of these objects that are created while the '*SUBTABFORENTER' keyword is set to a non-zero value or a true state. If this keyword is zero or in a false state when one of these objects is create, there is no TAB character substitution used the created object. Setting the '*SUBTABFORENTER' to a non-zero value allows the supported GUI objects to invoke the TAB substituted when created. Setting the '*SUBTABFORENTER' to a zero value to not allow TAB substitution for the supported GUI objects when created. Also, note that a runtime keyword named 'PLB_SUBTABFORENTER={on|off}' can be used to establish the default behavior to be used when the CHECKBOX, COMBOBOX, or RADIO objects are created. If neither the '*SUBTABFORENTER' keyword nor the runtime 'PLB_SUBTABFORENTER' keywords are used, the default is to not allow TAB character substitution. - Added a new keyword named 'PLB_SUBTABFORENTER={on|off}' to the runtimes. This keyword can be used to establish the default behavior that allows the TAB character to be substituted for an ENTER key for a COMBOBOX, CHECKBOX, or RADIO GUI object. When this keyword is set to an ON state, any of the supported objects that are created will perform TAB substitution for an ENTER key when the objects have the keying focus. Also, note that a keyword named '*SUBTABFORENTER={nvar}' for the GETMODE/SETMODE instructions can be used to invoke the TAB character substitution for the newly created GUI objects of COMBOBOX, CHECKBOX, or RADIO. If the 'PLB_SUBTABFORENTER' keyword is not specified when the runtime starts, the default behavior does not allow TAB character substitution. Note: 1. The TAB character substitution is being implemented to help provide a smooth flow of keyed data by an end-user with a minimal number of key strokes. - Added two new methods named SetIconSpacing and GetIconSpacing for a LISTVIEW object. The SetIconSpacing method allows the horizontal and vertical distance between icons presented by a LISTVIEW using the ICON viewstyle to be defined. The GetIconSpacing method allows the last settings specified by the SetIconSpacing to be retrieved. ............................................................... . SetIconSpacing Method . The SetIconSpacing method allows the horizontal and vertical pixel distance between icons presented by a LISTVIEW using the ICON viewstyle to be set. By default the Windows OS automatically controls the icon spacing based on the icon sizes that are being used in conjunction with the current font size being used. The SetIconSpacing can provide more flexible presents for icon and text to appear in the LISTVIEW view. In addition, this method allows minimum and maximum parameters to be set to provide restrictions when scaling is being used for a WINDOW object that has a LISTVIEW using the ICON viewstyle. The method uses the following format: [label] {object}.SetIconSpacing [GIVING {return}]: USING [*Width=]{cx}: [*Height=]{cy}[: [*WidthMin=]{cxmin}][: [*WidthMax=]{cxmax}][: [*HeightMin=]{cymin}][: [*HeightMax=]{cymax}] Where: {label} is an optional Program Execution Label. {object} is a required LISTVIEW object to be accessed. {return} is an optional Numeric Variable that gives the previous settings {cx} and {cy} settings for the SetIconSpacing method before the current instance of method was executed. {cx} is a required Numeric Variable or decimal number that specifies the horizontal width to be set for the icon spacing. {cy} is a required Numeric Variable or decimal number that specifies the vertical set to be set for the icon spacing. {cxmin} is an optional Numeric Variable or decimal number that specifies the minimum allowed horizontal width to be set for the icon spacing when scaling the LISTVIEW. {cxmax} is an optional Numeric Variable or decimal number that specifies the maximum allowed horizontal width to be set for the icon spacing when scaling the LISTVIEW. {cymin} is an optional Numeric Variable or decimal number that specifies the minimum allowed vertical height to be set for the icon spacing when scaling the LISTVIEW. {cymax} is an optional Numeric Variable or decimal number that specifies the maximum allowed vertical height to be set for the icon spacing when scaling the LISTVIEW. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to a TRUE state when the method return value is zero. Otherwise, the ZERO flag is cleared. 2. The OVER flag is set if the returned value is two large for {return} variable. 3. The Microsoft MSDN documentation for the 'SetIconSpacing' method is described as follows: "The cx and cy parameters are relative to the upper-left corner of an icon bitmap. Therefore, to set spacing between icons that do not overlap, the cx or cy values must include the size of the icon, plus the amount of empty space desired between icons. Values that do not include the width of the icon will result in overlaps. When defining the icon spacing, cx and cy must set to 4 or larger. Smaller values will not yield the desired layout. You can reset cx and cy to the default spacing by setting both values to -1. This approach only allows you to reset both default settings. You cannot reset only cx or cy to the default setting by setting one of them to -1." 4. The SetIconSpacing method only used for a LISTVIEW object using the ICON VIEWSTYLE property. 5. If either the {cx} or {cy} input values are zero or -1, the current icon spacing settings are reset to be controlled by the Windows OS. ............................................................... . GetIconSpacing Method . The GetIconSpacing method retrieves the icon spacing settings as applied to a LISTVIEW by the PLB application. The method uses the following format: [label] {object}.GetIconSpacing [GIVING {return}]: USING [*Flags=]{flags} Where: {label} is an optional Program Execution Label. {object} is a required LISTVIEW object to be accessed. {return} is an optional Numeric Variable that returns the specified spacing setting value that is used for a LISTVIEW object. {flags} is a required Numeric Variable or decimal number that specifies a bit mask value the identifies the icon spacing values to be returned. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to a TRUE state when the method return value is zero. Otherwise, the ZERO flag is cleared. 2. The OVER flag is set if the returned value is two large for {return} variable. 3. The {flags} bit mask values are defined as follows: 0x00000000 - Returns the current horizontal width. 0x00000001 - Returns the current vertical height. 0x00000002 - Returns the original horizontal width used for scaling. 0x00000003 - Returns the original vertical height used for scaling. 0x00000004 - Returns the Windows OS GetItemSpacing method value. The high order 16 bits is the vertical icon spacing and the low order 16 bits is the horizontal icon spacing. - Modified the AddString method for a COMBOBOX object to support two optional parameters named 'Flags={dnumnvar}' and 'Delimiter={svarlit}'. The Flags parameter is a bit mask whose bit definitions can be used to invoke different behaviors for this method. The Delimiter parameter can be used to specify a delimiter character that separates the text data from an application item data value. NOTE: This change is NOT applied to a DATALIST. ............................................................... . AddString Method (update) . The method uses the following format: [label] {object}.AddString [GIVING {return}]: USING [*String=]{string}[: [*Flags=]{flags}][: [*Delimiter=]{delimiter}] Where: {label} is an optional Program Execution Label. {object} is a COMBOBOX object to which a string is added. {return} is a Numeric Variable that returns the zero-based position of the string within the list. {string} is a required Character String Variable or literal that specifies the string that is added. (flags} is an optional numeric variable or decimal number whose value is a bit mask that defines behavior for this method. {delimiter} is an optional character string or literal whose form pointed character defines a delimiter character that separates the combobox text data from an application data value. Flags Affected: EOS, OVER, ZERO Note the following: 1. If the SORTED property of {object} is true, the string is inserted and the list is sorted. Otherwise, the string is added to the end of the list. 2. Multiple logical records may be loaded into an object in a single operation. An embedded 0x7F character in {data} is identified as a logical record terminator. The detection of the 0x7F is a default action by the runtime for the INSERTITEM and SETITEM instructions and the AddString and InsertString methods. These operations provide improved load times when using the PL/B Application Server. The feature may be enabled or disabled by using the SETMODE *USE7F instruction. 3. If the method is successful, the zero-based position of the new string in the list is returned. If the method is not successful, {return} will contain a -1. 4. If the value returned is zero, the ZERO (or EQUAL) Condition Flag is set (TRUE). 5. If {return} is too small to contain the new string position, the OVER Condition Flag is set (TRUE). 6. The EOS Condition Flag is always cleared (FALSE). 7. For improved performance in the Application Server environment, do not specify the optional return value unless needed. 8. The {flags} bit mask definitions are defined as follows: 0x00000001 - The input {string} data stream is processed to allow an application data value to be specified for a Combobox data item. The expected format of the data stream allows the application data value to be appended to the data item text using a delimiter character. By default, the character value of '0x09' is used as a delimiter unless the {delimiter} method parameter is specified. Example {string} with item data value: Data INIT "abc",0x09,"123",0x7F: "rst",0x09,"456",0x7F: "xyz",0x09,"999" 9. The {delimiter} method parameter is only valid/used when the{flags} bit 0x00000001 is being used. The {delimiter} character at the form pointer is used as the delimiter character when processing application data values to be assigned to a specified data item in a COMBOBOX. If the {delimiter} parameter is not specified, the default delimiter character is a 0x09 character. - Added new method for a BUTTON object named 'AamCancelMode'. This method is used to specify that a click action on a BUTTON object cancels an AAM read that is currently active. The AamCancelMode method is now described as follows: ............................................................... . AamCancelMode Method for BUTTON . The AamCancelMode method sets the state for a BUTTON object to allow a click action to cancel an AFILE read that is active. The method uses the following format: [label] {object}.AamCancelMode GIVING {return} USING [*VALUE=]{value} Where: {label} is an optional Program Execution Label. {object} is a required BUTTON object to be accessed. {return } is a Numeric Variable that is always zero. {value} is a Numeric Variable or a decimal number. Flags Affected: OVER, ZERO Note the following: 1. The ZERO flag is set to a TRUE state when the {return} value zero. Otherwise the ZERO flag is cleared. 2. The OVER flag is set to a TRUE state if the value returned is too big to be stored into the {return} variable. 3. If the {value} is a zero, the BUTTON object is reset to not cancel an AFILE read. If the {value} is non-zero, the BUTTON object is set to cancel an AFILE read on a click action. - Corrected a problem where a PLB program could become non-responsive when mousewheel scrolling action was located over a Windows control that does not support scrolling. For example, a mousewheel scrolling action over a BUTTON object could make a program become non-responsive. Note: This problem would occur on some Windows OS versions while it did not occur on other Windows OS versions. ------------------------------------------------------------------------------- PLBWIN, PLBNET, ALL GUI CLIENTS - To provide more advanced Windows OS GUI functionality for PLB applications, it has become necessary to build the PLB runtimes around newer platform toolsets that require new Windows OS libraries to allow the latest features for PLB applications. Therefore, the 9.6 runtimes ( PLBWIN, PLBNET, PLBCLIENT, PLBCLINET, PLBCON, PLBCONET, PLBCLICON, PLBCLI, and PLBRUN ) now require a 'comctl32.dll' version 6 for enhanced Windows OS GUI features. In addition, new Windows OS 'C' runtime library versions are required for the new 9.6 runtimes: msvcp100.dll 10.0.40219.325 msvcr100.dll 10.0.40219.325 Note: 1. The 'C' runtime libraries must EXIST on a Windows OS system the is executing the PLBNET runtime. This is required because the .NET runtime can only be built to dynamically load the 'C' runtime libraries. This applies to PLBNET, PLBCLINET, PLBCONET, PLBCLI, and PLBRUN. 2. The 'C' runtime libraries for all other runtimes (except .NET runtimes) have been built such that the 'C' runtime libraries do not have to exist on a Windows OS executing the runtime. This applies to PLBWIN, PLBCON, PLBCLIENT, and PLBCLCON. 3. With the implementation of newer features and functionality that requires a newer platform toolset, the PLBNET, PLBCLINET, PLBCLI, and PLBRUN runtimes now require a .NET Framework 4.0.30319 as the minimum version. Since prior versions of PLB runtimes require a 'comctl32.dll' version 5, the 9.6 release includes runtimes built to a platform toolset that requires OS libraries at the same level as a 9.5B version. These version 5 runtimes have the same 9.6 updates but they can not provide the new look and features available when using 'comctl32.dll' version 6. The version 5 runtimes are named: PLBWIN5, PLBNET5, PLBCON5, PLBCONET5, PLBCLIENT5, PLBCLINET5, PLBCLICON5. Note: 1. The version 5 runtimes are implemented to ignore any version 6 features that are not available in 'comctl32.dll' version 5. 2. The PLBNET5, PLBCLINET5, and PLBCONET5 .NET runtimes require a .NET Framework version of 3.0 or later. ..... The new 'comctl32.dll' version 6 features that have been implemented as new properties and methods are described as follows: ...................................................................... Overview The GUI controls implemented using 'comctl32.dll' version 6 give the new Vista look. In this case, the controls have a flat face format with color coded presentations. The new Vista look applies to any PLB application that is executed using a runtime that uses the 'comctl32.dll' version 6. Windows Ribbon framework support has been added. Ribbon support is only available when using a runtime built for 'comctl32.dll' version 6. ...................................................................... Ribbon Support Windows Ribbon Controls The Windows Ribbon framework is a rich command presentation system that provides a modern alternative to the layered menus, toolbars, and task panes of traditional Windows applications. The Ribbon framework provides this flexibility by separating functionality from presentation with two distinct development structures: an Extensible Application Markup Language (XAML)-based markup language to declare controls and the visual layout of a Ribbon implementation, and runtime interfaces to initialize the framework and handle events at program execution time. See Links: "Ribbons" http://msdn.microsoft.com/en-us/library/cc872782.aspx "Windows Ribbon Framework" http://msdn.microsoft.com/en-us/library/windows/desktop/ dd371191(v=vs.85).aspx "Introducing the Windows Ribbon Framework" http://msdn.microsoft.com/en-us/library/windows/desktop/ dd316910%28v=vs.85%29.aspx Ribbon System Requirements 1. Ribbon support is NOT available for Windows XP. 2. Ribbon support is available for OS versions VISTA and later. 3. The Windows Ribbon Framework is required. Ribbon Parts Application button: The button that appears on the upper-left corner of a ribbon. The Application button replaces the File menu and is visible even when the ribbon is minimized. When the button is clicked, a menu that has a list of commands is displayed. Quick Access toolbar: A small, customizable toolbar that displays frequently used commands. Category: The logical grouping that represents the contents of a ribbon tab. Category Default button: The button that appears on the ribbon when the ribbon is minimized. When the button is clicked, the category reappears as a menu. Panel: An area of the ribbon bar that displays a group of related controls. Every ribbon category contains one or more ribbon panels. Ribbon elements: Controls in the panels, for example, buttons and comboboxes. PL/B Language Ribbon Support Ribbons are defined and created using the XAML based markup language to declare individual controls on a ribbon. Ribbons are only processed/used as a resource for a Windows application. Therefore, to give the maximum flexibility and functionality for ribbons using the PLB language, the PLB runtimes use a Windows resource DLL specified by the PLB application to load ribbon resources. This gives the most flexible and generic solution for the PLB developer to meet any program application requirements. Note: 1. The generation and definition of the resource DLL that contains the ribbon resources are implemented by the PLB program developer. See the section on Ribbon creation for more details. 2. Sunbelt provides a sample ribbon resource DLL named 'plbribres.dll' along with the XAML definitions to give a PLB developer a starting point toward developing ribbons as needed. 3. Ribbons can be loaded from any resource dll, using the RIBDLL=, and RIBNAME= properties of a WINDOW object. 4. One ribbon is supported per WINDOW object. 5. The ribbon size and position are controlled by the Windows OS ribbon framework. 6. The RIBMODE= property controls the how the WINDOW object adjusts to ribbon sizing and positioning. A value of $ShowRibModeAllwill cause the ribbon size to be used to re-size the window, and shift all other objects. A value of $ShowRibModeDockOnly will cause the current size of the ribbon to be added to the dock top padding size. 7. The ribbon interacts with the WINDOW object by sending a $Click event with the event result containing the identifier of the ribbon element. 8. The properties of the ribbon can be obtained using the RibbonGetProp method of the WINDOW object. 9. The properties of the ribbon can be modified using the RibbonSetProp method of the WINDOW object. 10. The RibbonSetModes method specifies the application modes to enable. This allows assigned groups of ribbon elements to be displayed and hidden under program control. 11. The RibbonShowContext method invokes a Context Popup for the element identified with the Id parameter at the given location. Ribbon Creation The generation and definition of the resource DLL that contains the ribbon resources are done by the PLB program developer. The minimum system requirements to generate a ribbon resource dll are defined as follows: 1. Requires Visual Studio 2005, 2008, 2010 or VC++ Express to be installed. 2. Windows 7 SDK is also required. 3. Sunbelt is providing a sample 'plbribres' VC++ project to a create resource dll from a sample XAML definition file. 4. The 'plbribres.dll' ribbons are used in sample programs named 'ribhtml.pls' and 'ribctx.pls'. Ribbon Designers (3rd Party) Another option to the PLB developer who wants to create a ribbon resource DLL is to use a third party ribbon designer. One possible option is a ribbon designer described as follows: Visual Ribbon Creator http://www.turboirc.com/vrc/ VRC requires Visual Studio 2005, 2008, 2010 or VC++ Express to be installed. Windows 7 SDK is also required. This ribbon designer generates a DLL that can be loaded and used by a Windows PL/B runtime. The sample VRC DLL named 'Ribedit.dll' is available to the PLB developer for evaluation. Ribbon Restrictions 1. A ribbon can only be created for a Window that is a top-level window of the desktop. 2. A ribbon can not be created for a Window that is a child Window. A ribbon can not be created on a Window that has a parent. 3. A ribbon can not be created on a Window has a tool window style. 4. A ribbon can not be created on a Window that does not have a caption. If a Window has a caption and a ribbon is attached to the Window, unpredictable rendering of the ribbon may result. Sunbelt Ribbon Sample Programs Sunbelt is providing example PLB programs that use sample ribbon resource DLLs. These programs and dlls are described as follows: PlbRibRes.DLL Sunbelt sample ribbon resource DLL. This resource dll includes the following XAML file definitions as resources: plbrib_cont.xml plbrib_font.xml plbrib_gall.xml plbrib_html.xml plbrib_simp.xml RibDll32.DLL This resource DLL was created using the Visual Ribbon Creator. This resource DLL demonstrates that the Sunbelt runtime can use a third party generated ribbon resource DLL. RibTest.pls Uses MRU (Most Recently Used) list. Uses Context Menu. Uses ribbon font properties. Uses ribbon modes. Uses ribbon events. Ribbon Resources from PlbRibRes DLL using RIBNAME property: RIB_SIMP_RIBBON RIB_GALL_RIBBON RIB_HTML_RIBBON RIB_CONT_RIBBON RIB_FONT_RIBBON Ribbon Resources from RibDll32 DLL using RIBNAME property: APPLICATION_RIBBON RibHtml.pls Uses ribbon font properties. Uses ribbon modes. Uses ribbon events. Ribbon Resources from PlbRibRes DLL using RIBNAME property: RIB_HTML_RIBBON Ribctx.pls Uses the RibbonShowContext method operations. Uses Context Menu. Uses ribbon events. Ribbon Resources from PlbRibRes DLL using RIBNAME property: RIB_CONT_RIBBON RibEdit Uses Font Properties. Uses ribbon events. Ribbon Resources from RibDll32 DLL using RIBNAME property: APPLICATION_RIBBON ...................................................................... Enhancements for Comctl32 DLL Version 6 ........................ BUTTON Object Properties BUTTONTYPE= (Comctl32 Version 6 Required) This property can only be used in a CREATE or GETPROP instruction. This property allows the BUTTON object to have extended characters as follows: $SplitButton EQU 1 This button type value creates the button as a split button. A split button has a drop down arrow can be used to present a floating menu that is specified using the FLOATMENU property. $CommandLink EQU 2 This button type creates the button as a command link that behaves like a button, but the command link button has a green arrow on the left pointing to the button text. A caption for the button text can be set using the CMDNOTE property. CMDNOTE= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The text string specified for the CMDNOTE property specifies a note that is associated with a command link button. SHIELD= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The SHIELD property specifies whether an elevation icon is to be displayed for a button or command link. If this property is not used, the elevation icon is not displayed. The elevation icon is the shield icon that is presented when the administrator privileges are required. If a value of 1 is specifies that the OS elevation icon is to be presented. For a value of 0, the elevation icon is not presented. FLOATMENU= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The FLOATMENU property specifies the object id of a FLOATMENU that is to be associated with a button. If a FLOATMENU has been specified, the drop down arrow invokes the FLOATMENU. Also, a right mouse down action invokes the FLOATMENU. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. If the is NULL, the default visual style is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. ........................ RADIO Object Properties PUSHLIKE= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The PUSHLIKE property causes the RADIO object to look and act like a push button. The push like button appears to be raised when it is not pushed or checked. It appears to be sunken when it is pushed or checked. FLOATMENU= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The FLOATMENU property specifies the object id of a FLOATMENU that is to be associated with a RADIO object. If a FLOATMENU has been specified, a right mouse down invokes the FLOATMENU for a RADIO object. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. If the is NULL, the default visual style is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. ........................ CHECKBOX Object Properties PUSHLIKE= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The PUSHLIKE property causes the CHECKBOX object to look and act like a push button. The push like button appears to be raised when it is not pushed or checked. It appears to be sunken when it is pushed or checked. FLOATMENU= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The FLOATMENU property specifies the object id of a FLOATMENU that is to be associated with a CHECKBOX object. If a FLOATMENU has been specified, a right mouse down invokes the FLOATMENU for a CHECKBOX object. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. If the is NULL, the default visual style is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. ........................ EDITTEXT Object Properties CUETEXT= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The CUETEXT property sets the cue banner text that is displayed for an EDITTEXT object. The cue banner is displayed when the EDITTEXT is empty. The CUETEXT property is only displayed by the Windows OS for a single line EDITTEXT control. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. If the is NULL, the default visual style is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. ........................ COMBOBOX Object Properties CUETEXT= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The CUETEXT property sets the cue banner text that is displayed for an edit control of a COMBOBOX object. The cue banner is displayed when the COMBOBOX has no selection. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. If the is NULL, the default visual style is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. ........................ LISTVIEW Object Properties FLOATMENU= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The FLOATMENU property specifies the object id of a FLOATMENU that is to be associated with a LISTVIEW object. If a FLOATMENU has been specified, a right mouse down invokes the FLOATMENU for a LISTVIEW object. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. If the is NULL, the default visual style is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. ........................ TREEVIEW Object Properties FLOATMENU= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The FLOATMENU property specifies the object id of a FLOATMENU that is to be associated with a TREEVIEW object. If a FLOATMENU has been specified, a right mouse down invokes the FLOATMENU for a TREEVIEW object. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. If the is NULL, the default visual style is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. ........................ WINDOW Object Properties RIBDLL= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The RIBDLL specifies the name of an external dll that contains ribbon resources. RIBNAME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The RIBNAME property specifies the name of a ribbon resource that is located in the RIBDLL external dll. When a name is changed, the associated ribbon is shown. A blank name removes the ribbon. RIBMODE= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The RIBMODE property specifies a mode value that controls the behavior for displaying a ribbon resource. The following are supported ribbon visual modes: $ShowRibModeAll EQU 0 This ribbon mode causes a behavior where the ribbon size is used to resize the window and shift all GUI objects down on the window. This is the default behavior if the RIBMODE property is not used. $ShowRibModeDockOnly EQU 1 This ribbon mode causes a behavior where the current size of the ribbon is added to the DOCKPADT padding size. This mode is useful when the other controls on a window are docked. If controls are used that are not docked, then a ribbon can overlay those controls when this ribbon mode is used. FLOATMENU= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The FLOATMENU property specifies the object id of a FLOATMENU that is to be associated with a WINDOW object. If a FLOATMENU has been specified, a right mouse down invokes the FLOATMENU for a WINDOW object. THEME= (Comctl32 Version 6 Required) This property can be used in a CREATE, GETPROP, or SETPROP instruction. The THEME property allows the visual style of another Windows application to be used for a control in place of the default visual style. The THEME property for a WINDOW object defines the default theme to be applied to all GUI objects created on that window. If the is NULL, the default visual style of the runtime is used. The Windows "Explorer" application is a documented alternative theme that can be specified at this time. This property can be used for future alternative visual styles as they are made available by Microsoft. Note, that a visual style for any one GUI object may not have a visual affect as applied by an alternative visual style. MINWIDTH= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The MINWIDTH property can be used to set a minimum width for a WINDOW object. This minimum width prevents a window from being sized below this size. MINHEIGHT= This property can be used in a CREATE, GETPROP, or SETPROP instruction. The MINHEIGHT property can be used to set a minimum height for a WINDOW object. This minimum height prevents a window from being sized below this size. ........................ WINDOW Object Events The $CLICK event has been added to the WINDOW object. When a user click action on a ribbon resource occurs, the $CLICK event is generated. In this case, the result value is the ID number defined for a ribbon element in the ribbon resource DLL. ........................ WINDOW Object Methods New methods have been to the WINDOW object to support the ribbon features that have been implemented. This new methods are used to provide the various programming controls for the ribbon resources. ............................................................... . RibbonGetProp Method . This method returns a property of a ribbon or element in a ribbon. This method only provides properties for the currently active ribbon of a WINDOW object. The method uses the following format: [label] {object}.RibbonGetProp [GIVING {return}]: USING [*ID=]{id}: [*PROPERTY=]{property} Where: {label} is an optional Program Execution Label. {object} is a WINDOW object that is previously created. {return} is a Numeric Variable or Character String Variable that returns the property value or string. {id} is a Numeric Variable or decimal number that identifies the ribbon or ribbon element to get the property from. {property} is a Numeric Variable or decimal number that identifies the property to be retrieved. Flags Affected: EOS, OVER, ZERO Note the following: 1. If the value returned is zero, the ZERO (or EQUAL) Condition Flag is set (TRUE). 2. If {return} is too small to contain a numeric value, the OVER Condition Flag is set (TRUE). 3. The EOS flag is set if a returned string is too large to be stored into a Character String Variable without being truncated. 4. An {id} value of zero identifies the ribbon resource. A non-zero {id} value identifies an element on the ribbon resource. 5. The {property} value is a unique identifier for the specific property to be accessed as defined for the ribbon or ribbon element. Properties in the following list have a prefix identifier of "UI_PKEY_". The following properties are supported: UI_PKEY_Enabled EQU 1 UI_PKEY_Enabled is used by an application to query whether a control is enabled and able to respond to user interaction. UI_PKEY_LabelDescription EQU 2 UI_PKEY_LabelDescription is used by an application to query the description associated with a UI_PKEY_Label. The property value is a string constrained to any sequence of characters, including white space and line-break characters. Note: 1. Use the Universal Character Set (UCS) XML character reference to specify a line break. UI_PKEY_Keytip EQU 3 UI_PKEY_Keytip is used by an application to query the keyboard accelerator of a ribbon control. This property value is a string, composed of any sequence of characters including white space. The value of UI_PKEY_Keytip acts as the keyboard accelerator for a Command unless that Command is exposed through a menu item. In this case, the framework ignores the UI_PKEY_Keytip value and instead uses a character preceded by an ampersand as specified by Command.LabelTitle or UI_PKEY_Label. If no ampersand is specified by Command.LabelTitle or UI_PKEY_Label, no keytip or keyboard accelerator is exposed. UI_PKEY_Label EQU 4 UI_PKEY_Label is used by an application to query the label text of tabs, groups, buttons, gallery items, and other Ribbon controls. The property value is a string constrained to any sequence of characters, including white space and line-break characters. Note: 1. Use the Universal Character Set (UCS) XML character reference to specify a line break. UI_PKEY_TooltipDescription EQU 5 UI_PKEY_TooltipDescription is used by an application to query the description associated with a UI_PKEY_TooltipTitle. The property value is a string constrained to any sequence of characters, including white space and line-break characters. UI_PKEY_TooltipTitle EQU 6 UI_PKEY_TooltipTitle is used by an application to query the tooltip of tabs, groups, buttons, gallery items, and other Ribbon controls. The property value is a string constrained to any sequence of characters, including white space and line-break characters. Note: 1. Use the Universal Character Set (UCS) XML character reference to specify a line break. UI_PKEY_SelectedItem EQU 104 UI_PKEY_SelectedItem is used by an application to query the selected item in a gallery control. The property value is the index of the selected item in a collection. UI_PKEY_BooleanValue EQU 200 UI_PKEY_BooleanValue is used by an application to query the toggle-state of a Check Box, Toggle Button, and the button control of a SplitButtonGallery. UI_PKEY_DecimalValue EQU 201 UI_PKEY_DecimalValue is used by an application to query the value in the edit field of the Spinner control. UI_PKEY_StringValue EQU 202 UI_PKEY_StringValue is used by an application to query the value in the edit field of the Combo Box control. UI_PKEY_FontProperties EQU 300 UI_PKEY_FontProperties is used by an application to query or set all the font properties as a comma delimited string. The format of this string is: UI_PKEY_FontProperties_Family, UI_PKEY_FontProperties_Size, UI_PKEY_FontProperties_Bold, UI_PKEY_FontProperties_Italic, UI_PKEY_FontProperties_Underline, UI_PKEY_FontProperties_Strikethrough, UI_PKEY_FontProperties_VerticalPositioning, UI_PKEY_FontProperties_ForegroundColor, UI_PKEY_FontProperties_BackgroundColor, UI_PKEY_FontProperties_ForegroundColorType, UI_PKEY_FontProperties_BackgroundColorType UI_PKEY_FontProperties_Family EQU 301 UI_PKEY_FontProperties_Family is used by an application to query the value of the Font family drop-down gallery. The value of UI_PKEY_FontProperties_Family matches a Windows GDI Font Families name retrieved with the EnumFontFamilies function or EnumFontFamiliesEx function. The default value is an empty string. If an empty string is supplied for the value for UI_PKEY_FontProperties_Family, then the font selection is cleared. UI_PKEY_FontProperties_Size EQU 302 UI_PKEY_FontProperties_Size is used by an application to query the value of the Font size control. The value is in 1/10 of a point Valid values for this property range from 1 to 9999, inclusive. If a user tries to enter an invalid value, the entry is rejected and the Font size control reverts to the last valid value. If an application attempts to set font size programmatically to a value outside the valid range, the Ribbon framework invalidates all font properties and sets the font controls (Font size and Font face) to blank or to their default state, where appropriate. The default value is 0. A value of 0 specifies that no single point size is selected (either no text, or a run of dissimilar sized text, is selected). UI_PKEY_FontProperties_Bold EQU 303 UI_PKEY_FontProperties_Bold is used by an application to query the state of the Bold button. UI_PKEY_FontProperties_Italic EQU 304 UI_PKEY_FontProperties_Italic is used by an application to query the state of the Italic button. UI_PKEY_FontProperties_Underline EQU 305 UI_PKEY_FontProperties_Underline is used by an application to query the state of the Underline button. UI_PKEY_FontProperties_Strikethrough EQU 306 UI_PKEY_FontProperties_Strikethrough is used by an application to query the state of the Strikethrough button. UI_PKEY_FontProperties_VerticalPositioning EQU 307 UI_PKEY_FontProperties_VerticalPositioning is used by an application to query the value of the Superscript and Subscript controls. UI_PKEY_FontProperties_ForegroundColor EQU 308 UI_PKEY_FontProperties_ForegroundColor is used by an application, in conjunction with UI_PKEY_FontProperties_ForegroundColorType, to query Text color gallery settings. UI_PKEY_FontProperties_BackgroundColor EQU 309 UI_PKEY_FontProperties_BackgroundColor is used by an application, in conjunction with UI_PKEY_FontProperties_BackgroundColorType, to query Text highlight color gallery settings. UI_PKEY_FontProperties_ForegroundColorType EQU 310 UI_PKEY_FontProperties_ForegroundColorType is used by an application, in conjunction with UI_PKEY_FontProperties_ForegroundColor, to query Text color gallery settings. The property value is from the UI_SWATCHCOLORTYPE enumeration. The default value is UI_SWATCHCOLORTYPE_RGB. UI_PKEY_FontProperties_BackgroundColorType EQU 311 UI_PKEY_FontProperties_BackgroundColorType is used by an application, in conjunction with UI_PKEY_FontProperties_BackgroundColor, to query Text highlight color gallery settings. The property value is from the UI_SWATCHCOLORTYPE enumeration. The default value is UI_SWATCHCOLORTYPE_RGB. UI_PKEY_RecentItems EQU 350 UI_PKEY_RecentItems is used by an application to associate or query the object id of a ListView that contains the data for the most recently used (MRU) items collection of the Application Menu. The information for each MRU item is a line item in the ListView object. UI_PKEY_Color EQU 400 UI_PKEY_Color is used by an application to query the color value of the DropDownColorPicker control. The property value is a COLORREF value. UI_PKEY_ColorType EQU 401 UI_PKEY_ColorType is used by an application to query color setting of the DropDownColorPicker control. The property value is from the UI_SWATCHCOLORTYPE enumeration. UI_SWATCHCOLORTYPE_NOCOLOR EQU 0 Application should treat the color setting as transparent. Typically used in conjunction with the No color setting. UI_SWATCHCOLORTYPE_AUTOMATIC EQU 1 Application should query GetSysColor(COLOR_WINDOWTEXT). Typically used in conjunction with the Automatic color setting. UI_SWATCHCOLORTYPE_RGB EQU 2 Application should query UI_PKEY_Color for the color setting. UI_PKEY_ColorMode EQU 402 If the UI_PKEY_ColorMode is set to UI_SWATCHCOLORMODE_MONOCHROME, the RGB value is interpreted as a one-bit-per-pixel pattern. UI_SWATCHCOLORMODE_NORMAL EQU 0 UI_SWATCHCOLORMODE_MONOCHROME EQU 1 UI_PKEY_ThemeColorsCategoryLabel EQU 403 UI_PKEY_ThemeColorsCategoryLabel is used by an application to query the value of the label associated with the Theme Colors category of a DropDownColorPicker. UI_PKEY_StandardColorsCategoryLabel EQU 404 UI_PKEY_StandardColorsCategoryLabel is used by an application to query the value of the label associated with the Standard Colors category of a DropDownColorPicker. UI_PKEY_RecentColorsCategoryLabel EQU 405 UI_PKEY_RecentColorsCategoryLabel is used by an application to query the value of the label associated with the Recent Colors category of a DropDownColorPicker. UI_PKEY_AutomaticColorLabel EQU 406 UI_PKEY_AutomaticColorLabel is used by an application to query the value of the label associated with the Automatic button of a DropDownColorPicker. This button is used by the application to specify a default color as required. UI_PKEY_NoColorLabel EQU 407 UI_PKEY_NoColorLabel is used by an application to query the value of the label associated with the No color button of a DropDownColorPicker. UI_PKEY_MoreColorsLabel EQU 408 UI_PKEY_MoreColorsLabel is used by an application to query the value of the label associated with the More colors button of a DropDownColorPicker. UI_PKEY_Viewable EQU 1000 UI_PKEY_Viewable is used by an application to query the visible or hidden state of the ribbon UI. UI_PKEY_Minimized EQU 1001 UI_PKEY_Minimized is used by an application to query the collapsed or expanded state of the ribbon UI. UI_PKEY_QuickAccessToolbarDock EQU 1002 UI_PKEY_QuickAccessToolbarDock is used by an application to query the dock-state of the Quick Access Toolbar (QAT). The property value is from the UI_CONTROLDOCK enumeration. UI_CONTROLDOCK_TOP EQU 1 The QAT is docked in the nonclient area of the Ribbon host application, as shown in the following screen shot. UI_CONTROLDOCK_BOTTOM EQU 3 The QAT is docked as a visually integral band below the Ribbon, as shown in the following screen shot. UI_PKEY_GlobalBackgroundColor EQU 2000 UI_PKEY_GlobalBackgroundColor is used by an application to query the global background color for a customized ribbon. This color uses HSB (Hue, Saturation, Brightness) values. This color is NOT a RGB color value. UI_PKEY_GlobalHighlightColor EQU 2001 UI_PKEY_GlobalHighlightColor is used by an application to query the global highlight color for a customized ribbon. This color uses HSB (Hue, Saturation, Brightness) values. This color is NOT a RGB color value. UI_PKEY_GlobalTextColor EQU 2002 UI_PKEY_GlobalTextColor is used by an application to query the global text color for a customized ribbon. This color uses HSB (Hue, Saturation, Brightness) values. This color is NOT a RGB color value. ............................................................... . RibbonSetProp Method . This method sets a property for a ribbon or ribbon element. This method only sets properties for the currently active ribbon of a WINDOW object. The method uses the following format: [label] {object}.RibbonSetProp [GIVING {return}]: USING [*ID=]{id}: [*PROPERTY=]{property}[: [*VALUE=]{value}] Where: {label} is an optional Program Execution Label. {object} is a WINDOW object that is previously created. {return} is a Numeric Variable that contains pass or fail indication. A non-zero value indicates the method failed while a zero indicates the method was executed successfully. {id} is a Numeric Variable or decimal number that identifies the ribbon or ribbon element used in setting the property. {property} is a Numeric Variable or decimal number that identifies the property to be set. {value} is an optional Numeric Variable, decimal number, Character String Variable, or a Character String Literal used when setting the property. Flags Affected: OVER, ZERO Note the following: 1. If the value returned is zero, the ZERO (or EQUAL) Condition Flag is set (TRUE). 2. If {return} is too small to contain a numeric value, the OVER Condition Flag is set (TRUE). 3. See the RibbonGetProp note (5.) for a complete list of UI_PKEY property values that can be use for this method. ............................................................... . RibbonSetModes Method . This method is used to set the application modes to be enabled for ribbon elements. A mode indicates the functionality required and, therefore, which elements should be displayed (or hidden) at run time, depending on the state or context of an application. This method only sets properties for the currently active ribbon of a WINDOW object. The method uses the following format: [label] {object}.RibbonSetModes [GIVING {return}]: USING [*MODE=]{mode} Where: {label} is an optional Program Execution Label. {object} is a WINDOW object that is previously created. {return} is a Numeric Variable that contains a zero value. {mode} is a Numeric Variable or decimal number that identifies the ribbon mode value to set. Flags Affected: OVER, ZERO Note the following: 1. If the value returned is zero, the ZERO (or EQUAL) Condition Flag is set (TRUE). 2. If {return} is too small to contain a numeric value, the OVER Condition Flag is set (TRUE). 3. Modes are defined and declared in the Ribbon markup (XAML source code) that defines the ribbon elements. Modes are assigned to individual ribbon elements to define groups of ribbon elements. When a specific mode is enabled, this action causes ribbon elements associated with a mode to be displayed while ribbon elements not associated with the mode are hidden. ............................................................... . RibbonShowContext Method . This method invokes a Context Popup for the ribbon element identified with the ID parameter at the given location. This method only affects the currently active ribbon of a WINDOW object. The method uses the following format: [label] {object}.RibbonShowContext [GIVING {return}]: USING [*ID=]{id}: [*LEFT=]{left}: [*TOP=]{top}] Where: {label} is an optional Program Execution Label. {object} is a WINDOW object that is previously created. {return} is a Numeric Variable that always contains a value of zero. {id} is a Numeric Variable or decimal number that identifies ribbon Context Popup element used by this method. {left} is a Numeric Variable or decimal number that identifies the left pixel coordinate of the Context Popup. {top} is a Numeric Variable or decimal number that identifies the top pixel coordinate of the Context Popup. Flags Affected: OVER, ZERO Note the following: 1. If the value returned is zero, the ZERO (or EQUAL) Condition Flag is set (TRUE). 2. If {return} is too small to contain a numeric value, the OVER Condition Flag is set (TRUE). 3. The Context Popup is composed of two components: the ContextMenu and MiniToolbar elements of a ribbon. The Context Popup is typically displayed by right-clicking the mouse (or through the keyboard shortcut SHIFT+F10) on an object of interest. The UI actions required to display the Context Popup are defined by the PLB application. Therefore, to active a Context Popup requires a UI action that executes this method. The ContextMenu is a list of menu items that are contextual and based on the specific control that is clicked or the control with focus (when using the keyboard). The MiniToolbar is a floating toolbar that incorporates various Commands, galleries, and complex controls such as the Font Control and the ComboBox. - New methods have been added for a COLOR object. These methods allow a color to be specified and retrieved a HSB value. The HSB value defines the (H)ue, (S)aturation, and (B)rightness of a color. The new methods are defined as follows: ............................................................... . GetHSB Method . This method returns the current color as a HSB (Hue, Saturation, Brightness) value. The method uses the following format: [label] {object}.GetHsb [GIVING {return}] Where: {label} is an optional Program Execution Label. {object} is a COLOR object that is previously created. {return} is a Numeric Variable that returns the HSB value. Flags Affected: OVER, ZERO Note the following: 1. If the value returned is zero, the ZERO (or EQUAL) Condition Flag is set (TRUE). 2. If {return} is too small to contain the HSB value, the OVER Condition Flag is set (TRUE). ............................................................... . SetHSB Method . This method sets the current color from a HSB (Hue, Saturation, Brightness) value. The method uses the following format: [label] {object}.SetHsb [GIVING {return}] USING [*HSB=]{hsb} Where: {label} is an optional Program Execution Label. {object} is a COLOR object that is previously created. {return} is a Numeric Variable that always returned as zero. {hsb} is a required numeric value that has the new HSB (Hue, Saturation, Brightness) value. Flags Affected: OVER, ZERO Note the following: 1. If the value returned is zero, the ZERO (or EQUAL) Condition Flag is set (TRUE). 2. If {return} is too small to contain the return value, the OVER Condition Flag is set (TRUE). - Modified the 'GETINFO TYPE={pfile}' to return additional information about a previously opened {pfile}. The additional data fields for the {pfile} are described as follows: Column Size Value Returned is: 246 4 The current *UNITS setting for the {pfile}. The expected *UNITS values are defined as follows: Value Description 1 *CHARS 2 *LOENGLISH 3 *LOMETRIC 4 *HIENGLISH 5 *HIMETRIC 6 *PIXELS 7 *TWIPS 8 *FONT 250 8 The current print character height used for the {pfile}. This value is specified in PIXELS. 258 8 The current print character width used for the {pfile}. This value is specified in PIXELS. 266 8 The current print vertical position using the current {pfile} *UNITS setting. If the *UNITS is set to '*CHARS', the row position is returned. Otherwise, the value returned depends on the current *UNITS setting. 274 8 The current horizontal vertical position using the current {pfile} *UNITS setting. If the *UNITS is set to '*CHARS' the column position is returned. Otherwise, the value returned depends on the current *UNITS setting. - Modified the 'Scale' method for a WINDOW object to work around a Windows COMCTL32.DLL version 5 problem where the text and grid lines overlaid each other after a font size change was performed. This problem does not exist when using the COMCTL32.DLL version 6. - Corrected a problem where an ACTIVATE of a RADIOGRP object might hang until a WINDOW was minimized or sized. This problem was caused by 9.5B changes for the background color issues. This problem was obscured by the existence of a CHECKGRP and the order by which CHECKGRP/RADIOGRP objects were created in a program. - Corrected a problem where a TREEVIEW with a single root item would cause the GetXmlDataSize method to return a size of zero. Also, the TREEVIEW methods SaveXmlToDim and SaveXmlToFile would give an ERROR for this same scenario. - Corrected a problem were the amount of TEXT data processed from the Windows Clipboard into all of the variables in the CLIPGET variable list was being limited to 64KB characters. With this change, the total size of the Clipboard TEXT data is only limited by Windows OS restrictions. - Corrected a problem where the BGCOLOR for the HSCROLLABAR and VSCROLLBAR objects was not being saved in a PLF. This was preventing a BGCOLOR property that was specified at design time from taking affect when the PLF was loaded using a FORMLOAD. - Corrected a problem when one object that is being deactivated and overlays another object that has a transparent background. In this case, the problem symptom is that the object with the transparent background shows remnants of the top object after it deactivated. ------------------------------------------------------------------------------- PLBNET - Modified the number of allowed parameters for a WINAPI from 15 to 20. ------------------------------------------------------------------------------- PLBNET, PLBCLINET - Corrected a problem where the PLB Designer was encountering an error using a custom user .NET control that caused an excessive number of .NET COLLECTION nested levels. Prior versions of the runtimes were limited to 5 nested levels for .NET COLLECTIONs. A change has been made to now support up to 20 nested levels for .NET COLLECTIONs. - Corrected a problem where read-only properties were being serialized into a PLF form for a .NET Collection with compound .NET objects. This would cause a problem where a PLF form with these objects could not be loaded in the PLB Designer or the end-user application. Also, if the PLF should load, the .NET object events would be non-responsive. - Corrected a problem where a leading blank for the assembly specified by the ASSEMBLY keyword would give an unexpected OBJECT error. It was determined that some versions of the .NET Framework would work properly with a leading blank while other versions would not work. The runtime was modified to eliminate any leading or trailing blanks for both the CLASS and ASSEMBLY properties used to create a NETCONTROL or NETOJBECT. This problem was encountered when the PLB Designer was accessing a custom third party .NET assembly. ------------------------------------------------------------------------------- PLB (CE) - Modified the number of allowed parameters for a WINAPI from 15 to 20. ------------------------------------------------------------------------------- PLB(UNIX) - Modified the number of allowed parameters for a WINAPI from 15 to 20. ------------------------------------------------------------------------------- PLBCMP - Modified the compiler to support an immediate decimal number for any operand in any instruction where a literal and numeric variable are allowed. Example: FX FORM 5 F2P2 FORM 2.2 . MOVE 17.57, F2P2 MOVE 5, S$CMDLIN . ADD 5 to FX ADD 1, 2, FX MULT 3, FX . LOAD FX, 2, "123", 45 . - Added a new keyword named '*SUBTABFORENTER={nvar}' to the GETMODE and SETMODE instructions. See the description above for more details. - Modified the GETFILE instruction to support 3 new keywords named 'PRTBINCOUNT={nvar}', 'PRTBINNAMES={svar], and 'PRTBINTYPES={svar}'. See description under runtimes for more details. - Modified the HTTP instruction to support a new keyword named 'HTTPAUTH={svarlit}'. See the description for the runtimes for more details. - Modified the compiler to support the new keywords for the GETMODE, SETMODE, GETFILE, OPEN, and PREPARE instructions. The description of the new keywords are found in the runtime section of the readme. GETMODE *AAMCANCELCHAR={svar} GETMODE *AAMCHECKTIME={nvar} GETMODE *PLBAAMCANCELCHAR={svar} GETMODE *PLBAAMCHECKTIME={nvar} SETMODE *AAMCANCELCHAR={svar} SETMODE *AAMCHECKTIME={nvarlit} GETFILE AFILE, *AAMCANCELCHAR={svar} GETFILE AFILE, *AAMCHECKTIME={nvar} GETFILE AFILE, *AAMCANCELFLAG={nvar} OPEN AFILE, "aname", CANCELCHAR={svarslit}, CHECKTIME={nvar} PREP AFILE, "tname", "aname",...,CANCELCHAR={svarslit}: CHECKTIME={nvarlit} - Modified the compiler to support the 'ISCOMCTL6USED={nvar}' keyword for GETMODE instruction. - Modified the FINDCHAR instruction to support a comma or the prepositions: BY, TO, OF, FROM, USING, WITH, IN, or INTO for the {output} parameter. This change has been made to allow the FINDCHAR instruction to execute as documented. - Corrected a problem where the compiler would get an internal error or would generate bad program execution code when a CALL USING list with a variably indexed RECORD ARRAY reference was being used and a second index was using a static decimal value. If a program using this syntax could be executed, a GPF/SEGV error would prematurely terminate the program. Example of Syntax that caused the problem: REC RECORD A DIM 1 B DIM 1 RECORDEND . RECLIST LIST RECARR RECORD (2,2) LIKE REC LISTEND . NDX FORM "2" . ... UNPACK "12345678", RECLIST . CALL "XXX" USING RECARR(2,NDX) ;Caused GPF before 9.6 . KEYIN "HIT ENTER TO EXIT:",S$CMDLIN SHUTDOWN . RECX RECORD LIKE REC . XXX ROUTINE RECX . DISPLAY "RECX...:",RECX . RETURN - Corrected a problem where the compiler would get an internal error or would generate bad program execution code when a LROUTINE/ROUTINE parameter list item was a variably indexed RECORD ARRAY reference and one of the indices was a static decimal value. If a program using this syntax could be executed, a GPF/SEGV error would prematurely terminate the program. Example of Syntax that caused the problem: REC RECORD A DIM 1 B DIM 1 RECORDEND . RECARR RECORD (2,2) LIKE REC RECX RECORD LIKE REC . NDX FORM "2" . ... UNPACK "12", RECX . CALL "XXX" USING RECX . KEYIN "HIT ENTER TO EXIT:",S$CMDLIN SHUTDOWN . RECARRX RECORD (2,2) LIKE REC . XXX ROUTINE RECARRX(2,NDX) . DISPLAY "RECARRX...:",RECARRX(2,NDX) . RETURN - Corrected a problem where a cross reference print line was positioned 1 character positions to the left for continuation lines. ------------------------------------------------------------------------------- PLBDBUG - Corrected a problem where the 't' debug command or F8 function might not break on the next execution source line as shown in the '.sdb' file. The instruction that does not break is executing as expected. - Corrected a problem where the 'IP' command might report an invalid address error for a valid execution source line as shown in the '.sdb' file. ------------------------------------------------------------------------------- SUNINDEX - Corrected a problem where the SUNINDEX utility for Linux platforms would get an unexpected Linux OS error when writing more then 2GB bytes of data into the temporary files. ------------------------------------------------------------------------------- SUNSORT - Modified the sunsort(64) utility for Windows to support a new command line option '-w'. This option causes the sunsort utility to open the final output file in a Windows OS write-through cache mode. The write-through cache mode causes the Windows OS to immediately flush all data written to the cache for the output file. When the '-w' option is used, this prevents an excessive number of pending writes from building up in the Windows OS cache that need to be flushed to the output file. By eliminating the excessive number of cached writes for the output file, the overall performance of the system for other processes improves. However, when the '-w' option is used, the performance of the sunsort final output phase will be slower but there is less impact on other processes currently executing. - Corrected a problem where the SUNSORT utility for Linux platforms would get an unexpected Linux OS error when writing more then 2GB bytes of data into the temporary files. ------------------------------------------------------------------------------- PLBEQU.INC - Updated for missing types. - Corrected a problem where the $PLBHTTP definition was causing an unexpected compiler warning. ------------------------------------------------------------------------------- PLBMETH.INC - Updated for 9.6 release. ------------------------------------------------------------------------------- SUNWODBC.DLL - Modified to support the new SQLIO SQL data types of NCHAR and NCHAR_T for the National Character Set. ------------------------------------------------------------------------------- SUNWADO.DLL - Modified to support the new SQLIO SQL data types of NCHAR and NCHAR_T for the National Character Set. - The SUNWADO driver has been modified to provide a Windows error code when the DLL can not be loaded. The Windows error code can be used to determine the potential reason for an error when loading the DLL. - Modified the SUNWADO.DLL to use the Microsoft 'msado25.tlb' that was defined and used for the 9.5 version of the SUNWADO.DLL. This change allows the default SUNWADO.DLL to use the ADO interfaces that should work on the Windows XP systems. Note: 1. The SUNWADO.DLL releases for 9.5A and 9.5B were generated using a 'msado25.dll' that defined the ADO interfaces such that the SUNWADO.DLL would not work on Windows XP systems. 2. For the 9.6 patch release, the default SUNWADO.DLL uses the Microsoft 'msado25.tlb' version that is consistent with the 9.5 release. 3. For the 9.6 patch release, a new SUNWADO25.DLL has been created that uses the current Microsoft 'msado25.tlb' which defines an ADO interfaces that may be needed for newer Windows OS versions. 4. For the 9.6 patch release, a new SUNWADO28.DLL has been created that used the latest Microsoft 'msado28.tlb' which defines the latest ADO interfaces that may be needed for new Windows OS versions. 5. Since it is not possible to control which ADO interface version that is being used on a given Windows workstation, the end-user can configure the DBCONNECT driver keyword to use the driver (ie SUNWADO.DLL, SUNWADO25.DLL, or SUNWADO28.DLL) that works best. ------------------------------------------------------------------------------- DESIGNER.PLC - Added an option to the Layout section that allows the form and code panels to be shown on a single tab rather than individual tabs. - Corrected a C15 error resulting from a variable conflict when deleting a block of code. - Corrected an issue with copying and pasting tabcontrols. - Corrected an issue that would create duplicate resource entries in the outline. - Corrected an issue with undoing a property color change. - Corrected an issue with the TabStyle and ImageIndex properties during a paste operation. - Ensured that object design events are registered after a property change forces an object to be recreated. - Corrected handling of the imageindex property for tab controls during undo and repeat operations. - Now clears tabcontrol if an associated imagelist is deleted. - Corrected the selection of objects in the non-drawn listview of the integrated layout. - Modified the Standard Images function of the Imagelist Editor to recreate the working imagelist before applying the images. This allows a copy and paste of such an imagelist to display images correctly. - Corrected the update of the property window for the top, left, height, and width properties when the dock property is changed. - Corrected issues with creating printpage objects using the double-click method and with deleting printpage objects. - Corrected an issue with the shortcut menu not being displayed when right clicking on .Net controls in the Outline. - Added a default tabpage to .Net TabControls when empty to aid in drawing. - Added support for moving or selecting .Net TabControls by clicking in the client region of the control. - Corrected update of the outline when copying and pasting .Net TabControls. - Disables cut, copy, paste, and delete when a child item such as a listview column is selected. - Corrected an issue with the deletion of an object that had code attached. - Corrected an I05 error when accessing the ActiveX controls dialog after a form save. - Added logic for ActiveX controls that were installed but unable to be created during a form open. - Added logic for ActiveX controls that used the VersionIndependentProgID key rather than the Version key. - Corrected the setting or clearing of events using the properties window when multiple objects are selected. - Modified the TabPanel insert function to correctly adjust the new panels ZOrder property. - Delayed sizing of inserted TabPanels until after all objects have been drawn. This allows the nested objects dock and anchor properties to correctly place and size the objects. - Corrected code generation for nested splitcontainers. - The edit menu, format menu, size and position is now updated when a parent is selected using the shortcut menu. - Corrected the new object's position and parenting when dropping a .Net control on a container. - Notifies the user if a property or event edit is attempted while the property or event value column is too small to allow creation of the editing objects. - Corrected a variable conflict when inserting or removing panels of a tabcontrol that contained objects. - Corrected an issue with renaming an object and an empty code buffer. - Corrected an issue with applying the object code prefix. - Added support for the the Shield, BtnType, CmdNote, FloatMenu, PushLike, Theme, CueText, MinHeight, and MinWidth properties. - Added support for the form ribbon properties of RibDll, RibMode, and RibName. - Added logic to disable ComCtrl version 6 properties when running with ComCtrl version 5. - Modified the designer code logic to ensure that child .NetObjects are instantiated after the parent object. - Modified the Auto-Save logic to skip read-only forms. - Added support for the theme property to Button, CheckBox, ComboBox, and EditText objects. - Modified all designer forms to optionally use the "Explorer" theme. (Tools/Options/Behavior) - Added MinimumHeight and MinimumWidth property values for all designer forms. - Added CueText to appropriate designer forms. - Added a Help button to the User Controls form. - Corrected the positioning of the Outline shortcut menu when the Outline is docked right in the integrated mode. - Active property edits are now closed when the code window becomes active. - Ensure the dirty flag is set when undoing or repeating move and size changes. - Added a flag bit that prevents the temporary window from being displayed when loading a form during the Open and Save functions. ------------------------------------------------------------------------------- EDITOR.PLC - Removed traps from designer specific functions to allow the designer to catch and process errors. - Enhanced designer features for code selection. - Added double quote, period, backslash to the list of word delimiters. - Corrected an issue in VARTYPE that would return with the EQUAL flag in an indeterminate state causing the GOTO item in the shortcut menu to be incorrectly enabled or disabled. - Updated verbs and syntax files with new language features. - Modified to only report a change in the status for CanUndo, CanRedo, CanCut, CanCopy, and CanPaste. - Changed the find starting line number to be thread safe. - Added Trap for GetHotkeyForCommand. - Added logic to create the editor work directory if it doesn't exist. - Added logic to create the configuration file directory if it does not exist. ------------------------------------------------------------------------------- SUNIDE.PLC - Corrected a problem loading a cross referece that contained variable that was defiend in a %XREFOFF section of source. - Corrected an O105 error that could occur when the PLB_FNC keyword was set to "mixed" and running the new designer. - Corrected a potential F02 error that can occur when showing the tab control tooltip. - Added an option to Find in Files to only search project files. - Added lines of context options for find in files results. - Ccorrected a problem that was causing an O105 error in the designer the second time it is started if the designer exited with an error. - Added a "Whole Word Only" option to find in files dialog. - Reduced open files tabcontrol 'jitter' that can occur when switching between files. - Modified debugger startup as seperate process to limit the impact on the command line size limits. - Made changes so when files are opened in the find in files results, the xref for the program is loaded if the file is part of the currently opened project. - Made changes to prevent the IDE from opening the same file twice when sources are in a sub directory from a projects working directory. - Corrected an issue resolving includes when the compiler options included a -E# option (-E= alternate syntax) - Corrected an issue that caused the tab control in the IDE Options screen to be initialized incorrectly. ------------------------------------------------------------------------------- SUNCS21.OCX - Corrected a bug in auto indentation where if a dollar sign ($) appeared in an execution label and a verb was on the same line, the dollar signs would be copied to a new line when the user pressed enter. - Corrected a syntax help tooltip size problem that caused syntax help for methods be unusable. - Modified to honor the "Hide pointer while typing" control panel mouse setting. - Corrected a problem with find where the control could hang if a search was done against an empty file. - Corrected a syntax highlighting where if a comment line appeared in the middle of multiple line continuations, valid code was highlighted as a comment. ------------------------------------------------------------------------------- SCHEMAEDITOR.PLC - Corrected the import of arrays from PLB Code for views. - Added logic to ensure that the element count for a view column was always greater than zero. - Added support for the Identity SQL type. - Corrected the resetting of the unique column combobox during column addition. - Corrected the editing of the SQL column type for files. - Added support for the SQL_NCHAR and NCHAR_T Sql column types. - Corrected an SQL error when editing a File definition. - Corrected event handling in the Test form. - Added Unique, Zero Fill, and Nullable columns to the SQLIO columns listview - Corrected enabling of the columns menu when the type tabcontrol was changed. - Added CueText property to all forms. - Set MinimumHeight and MinimumWidth for all forms. - Set the default theme for all forms to "Explorer" and provided a program option to disable the theme. ------------------------------------------------------------------------------- DBGIFACE.PLC (Graphical Debugger) - Addressed a Designer/Debugger interaction where if both are running in the IDE, menu hot keys may stop working. - Modified startup to use alternalte locations for scratch files needed for watch performance enhancement added in 9.5. - Corrected a bug that prevented a user from modifying the contents of a variable in the watch variables dialog. - Corrected enhanced Watch update to be XP friendly. - Added additional error checking in setting up the enhanced watch dialog. - Corrected a syntax highlighting issue on line continuation. ------------------------------------------------------------------------------- PROFILER.PLC - Added standard menus for consistency. - Added a toolbar for commonly needed actions. - Updated form design with icons and alternating row colors. - Added support for the 'SegoeUI' font used as the default for Sunbelt applications - Added an options and about dialogs. - Added support for a configuration file to store user preferences. - Optimized program code for improved performance. - Enabled listview column sort with indicators. - Added support for the "Explorer" theme to all forms with an option that allows disabling it. - Set the minimumHeight and minimumWidth properties for all forms. ------------------------------------------------------------------------------- WATCH.PLC - Added CueText property to all forms. - Set MinimumHeight and MinimumWidth for all forms. - Set the default theme for all forms to "Explorer" and provided a program option to disable the theme. - Added icons to several forms. - Corrected the options window to display the current refresh interval. ------------------------------------------------------------------------------- DBEXPLORER.PLC - Added CueText property to all forms. - Set MinimumHeight and MinimumWidth for all forms. - Set the default theme for all forms to "Explorer" and provided a program option to disable the theme. -------------------------------------------------------------------------------