Statusbars


A StatusBar is the client-wide field placed right at the bottom of a window (but inside the borders). This field is used to display (usually) text messages about the "status" of the application, hence the name. When a StatusBar is created it has one field but additional fields can be added by creating StatusField controls as children of the StatusBar:

    STATUSBAR = create(StatusBar, "SB_1", 0, WINDOW, 0, 0, width, 0, flags)
    STATUSFIELD1 = create(StatusField, "SF_1", 0, STATUSBAR, 0, 0, width, 0, flags)
    STATUSFIELD2 = create(StatusField, "SF_2", 0, STATUSBAR, 0, 0, width, 0, flags)
The width parameter signifies how wide the field will be (in pixels) but if it is 0 then the field will stretch across to the right border. All other dimensions are ignored. The text in the StatusBar/Field can be set at creation time or accessed by using getText()& setText() in the normal manner. By default, text is left-aligned within the specified part of a status window. You can embed tab characters "\t" in the text to center or right-align it. Text to the right of a single tab character is centered, and text to the right of a double tab character "\t\t" is right-aligned. The widths of each field can be adjusted with:

    setStatusWidths(integer id, object fieldwidths )
If fieldwidths is an integer then only that particular field will be re-lengthed but if fieldwidths is a sequence of integers then id must be the StatusBar parent which will be divided into up to 255 items where each integer relates to the desired width of each field. Please take care that the length of the sequence is the same as the total number of fields in the StatusBar (including the parent). If there is a discrepancy then ARWEN will complain and refuse to cooperate. If any item's length is 0 then it's corresponding field will stretch to the edge of the screen (excluding any Size Grip). ARWEN will automatically resposition the status bar when the parent window is resized. An interesting twist for multiple-field StatusBars is that the user can put it into "simple" mode by sending the SB_SIMPLE message, ie:

    void = sendMessage(id, SB_SIMPLE, 1, 0) -- StatusBar will switch to a single field mode
In this state one field is shown as if it was the only one. In fact, it is an additional field not normally seen and any info in previously set fields is retained. The switch can be made back by sending this message:

    void = sendMessage(id, SB_SIMPLE, 0, 0) -- StatusBar will switch back to multiple field mode