887.1.1
(Windows/ATE) Adjust timing parameters to speed up MIAMEX,119 over ATE to AIX. (Querying checkboxes was ridiculously slow!)
887.1.2
(Windows/ATE) Although the timing adjustment helped, it is still not fast enough (particularly on AIX) to make supporting large numbers of checkboxes practical over ATE. To provide a faster means of creating and querying many buttons or checkboxes at a time, a new batch mode has been implemented, using MIAMEX,119 opcodes 8 and 9:
MAP1 ID(9),B,2 ! array of control IDs (must be B,2)
MAP1 CB(9),B,1 ! array of chkbox/radio valus (B,1)
XCALL MIAMEX,119,8,STATUS ! start batch
<insert here a batch of regular MIAMEX,119 calls
to create or query any kinds of controls>
COUNT = 9 ! set to max size of ID() and CB() arrays
XCALL MIAMEX,119,9,STATUS,COUNT,ID(1),CB(1) ! end batch
The start batch operation sets an internal flag, such that the return values (STATUS and ID) for all subsequent MIAMEX,119 calls are internally buffered instead of being returned. (You will probably need to remove any logic from your existing MIAMEX,119 calls that tests for return STATUS or ID's.)
When the end batch command is sent, the previously buffered results from the preceding MIAMEX,119 calls are returned in the arrays specified. Note that the COUNT parameter should be set to the maximum # of controls in the batch (and must be no more than the size of the actual mapped arrays). If the actual size of the batch was greater than COUNT, the results will be truncated there.
Note that you can either specify the first element of the arrays (as we did above), or you could supply the names of unformatted variables which the arrays were overlayed on.
887.0.1
Fix a problem with the cursor turning off during memo input when SBR=INFLD_KEEPALIVE set.
887.0.1
GUI controls are now saved and restored automatically when screen areas are saved and restored. Note that as before, when the area is less than the full screen, any controls which intersect with it are hidden when the area is saved. (This is necessary because controls ride on top of the normal text display layer, and thus any non-hidden controls would show through the area, ruining the effect of a pop-up box.)
887.0.3
The GUI version of XCALL MESAG now displays a token "Click OK to Continue" in the message box if you don't supply any message text. This isn't necessary with the non-GUI version because the "CR TO CONTINUE" message is automatically added; but with the GUI version, the message is replaced with an OK button, and although that is sufficient, it looks rather weird to have a message box with nothing in it but an OK button.
NOTE: The actual message displayed is defined in the SBRMSG.lan (lan = your language definition file extension, i.e. USA, UK, etc) as messages 002,008 and 002,009. Since these are new messages, you'll need to add them manually (or download an updated SBRMSG file.)
887.0.4
(GUI) TAB(-10,20) and MIAMEX,119 now directly support the concept of grouping controls within a groupbox. This kind of grouping serves three purposes:
• | It helps visually organize groups of fields; |
• | Since the coordinates of the controls within the group are relative to the coordinates of the groupbox itself, it allows a group to be relocated (at the source code level) by just changing the coordinates of the groupbox. |
• | It is essential in order to support separate groups of radio buttons (see next item below). |
To create a groupbox, just specify the TYPE value 33554432 (MBF'GROUPBOX). If you want a VB-style thin-frame groupbox, do NOT specify MBF'STATIC, but DO specify MBF'LFJUST, i.e.:
TXT = "This is the groupbox title"
TYPE = MBF'GROUPBOX + MBF'LFJUST
SROW = 10: SCOL = 20: EROW = 18: ECOL = 50
xcall MIAMEX,MX'WINBTN,1,GRPID,TXT,STATE,TYPE,CMD,FUNC,STATUS, &
SROW,SCOL,EROW,ECOL
After the groupbox is created, place controls within the groupbox by referencing the groupbox ID (GRPID in the example above) as the 20th parameter to subsequent MIAMEX,MX'WINBTN calls. Also, for the controls to be part of the group, specify coordinates relative to the groupbox. For example:
TXT = "Checkbox 1"
TYPE = MBF'CHKBOX + MBF'LFJUST
SROW = 3: SCOL = 4: EROW = 3: ECOL = 25
xcall MIAMEX,MX'WINBTN,1,ID,TXT,STATE,TYPE,CMD,CB1,STATUS, &
SROW,SCOL,EROW,ECOL,-1,-1,0,0,"",TIP$,GRPID
The above checkbox would appear on the 3rd line within the groupbox rather than on row 3 of the screen, because of the GRPID parameter.
887.0.5
Radio buttons are now supported by MIAMEX,119 and TAB(-10,20), using the TYPE flag 16 (MBF'RADIOBTN). Radio buttons are similar to checkboxes except that within a group, only one can be checked at a time. Checking any button automatically clears the others in that group. Using the same groupbox created in the example above (with ID GRPID), we could insert two radio buttons into it as follows:
TYPE = MBF'RADIOBTN + MBF'LFJUST
RB1 = 1 ! (B,1) first button checked
xcall MIAMEX,MX'WINBTN,1,ID1,"Radio button #1",0,TYPE,"", &
RB1,STATUS,3,4,3,25,-1,-1,0,0,"","Tooltip 1",GRPID
RB2 = 0 ! second button unchecked
xcall MIAMEX,MX'WINBTN,1,ID2,"Radio button #2",0,TYPE,"", &
RB2,STATUS,5,4,5,25,-1,-1,0,0,"","Tooltip 2",GRPID
Note that radio buttons, like checkboxes, take a 1 byte binary variable in place of the normal FUNC parameter (param #8). In a local Windows environment, you can query the state of the button directly via the associated variable. But in the ATE environment, you have to query the buttons explicitly using opcode 5. (See edit 885, item 6 below for more details on that.) Also note that if setting up buttons in using TAB(-10,20), you must specify the ASCII value of the button ("0" for unchecked or "1" for checked) in the position of the FUNC parameter, i.e.:
TAB(-10,20);"1,0,Radio button #1,0,";TYPE; &
",,1,3,4,3,25,-1,-1,0,0,,Tooltip 1,";GRPID;chr(127);
TAB(-10,20);"1,0,Radio button #2,0,";TYPE; &
",,0,5,4,5,25,-1,-1,0,0,,Tooltip 2,";GRPID;chr(127);
887.0.6
Fix some problems with long titles set via TAB(-10,1) and TAB(-10,2).