Please enable JavaScript to view this site.

A-Shell Development History

901.1.1

(Windows/ATE) INFLD now supports the groupbox concept better. That is, you can place an INFLD field within a groupbox, or within a TAB control, by setting INFLD's V parameter to the control ID of the parent groupbox or TAB control (plus 1). (You need to add 1 because the normal value for V is 1.)

For example, the following three statements create a groupbox and a static text control and an INFLD control within it. Note that when a control is specified as belonging to a parent groupbox or TAB control, the coordinates you specify for child control are offset by the upper left corner of the parent control.

! create a groupbox...(returns GRPID, which must be used to associate subsequent controls with this groupbox)

xcall MIAMEX, MX'WINCTL, 1, GRPID, "", 0, MBF'GROUPBOX+MBF'LFJUST, "", "", STATUS, GRPSROW, GRPSCOL, GRPEROW, GRPECOL, -1, -1

! Create a text label starting in row 2, column 3 of the groupbox

? tab(-10, 20);"1, 0, Input something:, 0, ";MBF'STATIC+MBF'LFJUST;, , , 2, 3, 2, 20, -1, -1, 0, 0, , , ";GRPID;chr(127);

! Create an INFLD control next to the text label

xcall INFLD, 2, 21, 10, 0, "A|G", FIELD$, INXCTL, GRPID+1, 1, EXITCODE, TIMER, 0, -1, -1, -1, "", INFCLR

901.1.2

Further adjustment to maximized window font calculation to try to avoid "overscan".

901.0.1

(Windows/ATE) "XP-Style" controls are now supported (under XP) if the ashw32.exe.manifest file is stored in the same directory as the ashw32 executable. Note, however, that when XP Styles are enabled, certain color capabilities are lost. In particular, it is no longer possible to specify the foreground text color of the text portion of a combobox, nor do non-Windows-standard edit control colors work.

901.0.2

(Windows/ATE) The system icon has been removed from dialog boxes created with the MBF'DIALOG and MBF'SYSMENU flags.

901.0.3

(Windows)  When a child window is launched (via XCALL AMOS, or the AMOS statement) it now uses the same icon as the parent A-Shell window. (This only applies if you launch A-Shell with the -g <icon> switch, specifying the name of an icon that you have previously sent us to be stored with A-Shell.)

901.0.4

(Windows/ATE) A fudge factor has been added to the font size calculation logic when maximizing the window to request a minimum left and right margin of 1/2 the average character width. This should eliminate the problem which previously occurred in certain isoloate video configurations where the first and last columns would be partially cut off after maximizing the window.

901.0.5

(Windows/ATE) Maximizing a window containing an XTREE control no longer re-scales the fonts within the XTREE control. This results in more columns being visible, rather than larger text (which generally seems closer to what people expect in that situation).

901.0.6

(Windows/ATE) When INFLD displays a message box (typically to report an editing format error), the title of the message box is now taken from the 000,001 entry of the SYS:APPMSG.xxx file (where xxx is your language definition, e.g. "USA", "CDN", etc.) If the file or entry is not defined, then it continues to use "INFLD".

901.0.7

(ATE) Fix various problems with combo boxes and date picker controls.

901.0.8

(Windows/ATE) Implement a tab control (via MIAMEX,119 or TAB(-10,20)), using the new control TYPE definition MBF'TAB (1073741824). A tab control may be conceptualized as a combination of a groupbox (MBF'GROUPBOX) and a row of buttons (aka "tabs") along the top. Clicking on a tab sends a notification string (via the keyboard channel) to the application allowing it to replace the current contents of the groupbox with new contents, based on which tab was clicked.

The coordinates specified are for the outer rectangle, which includes the space occupied by the tabs. The "client area" of the tab control (the usable area bounded by the tabs at the top and the left, right and bottom edges) acts like a groupbox. Controls placed in this area must specify the ID of the tab control in the parent ID parameter, and their coordinates are treated as offsets from the upper left corner of this client area. If the number and style of tabs is such that there are multiple rows of tabs, the client area is further reduced by the space taken up the the extra row(s) of tabs, so you should allow extra space if this is a possibility.

As with a groupbox, deleting the tab control deletes all of the controls within it.

Variations of the basic tab control can be specified by adding one or more of the following to the dwStyle parameter:

Parameter

Description

TCS'BUTTONS (256)

Tabs appear as buttons and no border is drawn around the display area.

TCS'MULTILINE (512)

If the tabs do not fit on one row, multiple rows are used. Otherwise, a scroll button is placed at the edge of the one row of tabs to allow it to be scrolled horizontally.

TCS'FIXEDWIDTH (1024)

All tabs are made the same width; otherwise the width of each tab is based on the text in that tab.

TCS'FORCELABELLEFT (32)

Tab labels are left justtified within each tab. This only makes sense with the TCS'FIXEDWIDTH style. Otherwise they are centered.

 

The tabs are defined by specifying TXT in the following format:

TEXT=Label1~Cmd1~~Label2~Cmd2~~...LabelN~CmdN

In the above specification, Label1 thru LabelN represent the text strings displayed in each tab, and Cmd1 thru CmdN represent the keyboard command strings each tab sends. As an example:

TEXT="Receivables~R^M~~Payables~P^M~~General Ledger~G^M"

This would define a set of 3 tabs, "Receivables", "Payables" and "General Ledger". Clicking on the "Receivables" tab would send the character "R" followed by Control-M (or ENTER), etc. A program using this arrangement would have to check for these keyboard commands, and on receipt, display the appropriate options within the display area of the tab control, according to which tab clicked.

See the sample program TAB1.BP. Note that this is a rather preliminary implementation of the TAB control feature, and is likely to be updated frequently over the next few weeks. Issues and features needing to be looked into:

Tab controls inside of dialogs.
Auto-adjustment of the user coordinates of the tab display area based on the number of tab rows.
Tooltips?
Icons?
Save/restore
Ability to select the initial tab

901.0.9

XCALL MIAMEX,119 now supports the CLASS, STYLE, and STYLEX parameters allowing native Windows STYLE and STYLEX flags to be specified with the supported control types. The CLASS parameter should probably be left blank since new control classes typically require internal modifications to A-Shell. There is no guarantee that specifying new STYLE and STYLEX options with existing control types (buttons, static text, etc.) will work as desired, but as long as the style feature is purely visual, it should be relatively harmless to experiment. (You'll need a reference to the Windows dwStyle (STYLE) and dwStyleEx (STYLEX) parameters used with the WIN32 API function CreateWindowEx() though.)

The complete syntax for MIAMEX,119 is now:

xcall MIAMEX, MX'WINBTN, OP, BTNID, TXT, STATE, TYPE, CMD, FUNC, STATUS, SROW, SCOL, EROW, ECOL{, FGC{, BGC{, STYLE{, SCALE{, FACE{, TIP, {, PARENTID{, CLASS, STYLE{, STYLEX}}}}}}}}}