window
WINDOW

The window statement brings a Panorama window to the front. It can also open a “secret” invisible window.


Parameters

This statement has one parameter:

window – is the exact name of the window that is to be brought to the front, or the window ID number (see Window ID Numbers). This must be a window that is currently open. If necessary, the procedure can find out the name of the current window with the info(“windowname”) function. It can get a list of all open windows with the info(“windows”) or listwindows( function. To open a “secret” window, the window name should be databasename:Secret. A secret window is just like any other window that contains a form, except that it is invisible. A procedure can flip to a secret window in another database (the database must be open), perform some operation on that database (search, sort, etc.) then go back to the original window – all without the flashing and updating that usually occur when you flip from window to window. Secret windows are temporary. The secret window ceases to exist as soon as the procedure brings another window to the top (or as soon as the procedure stops.) Note: The word Secret in the window name may be capitalized any way you want: secret, Secret or SECRET.


Description

This statement will bring a window to the front, on top of all other windows. The window must already be open (unless it is a secret window) and its name must be spelled correctly with all punctuation. If the window is not already open, an error will be generated, which can be trapped by if error (otherwise the procedure will stop). A window that is not already opened may be opened using the openform, opensheet, opencrosstab or openprocedure statements.

If you simply want to open any window in another database but you don’t care what window, use the topdatawindow statement or the openfile statement. If the database is already open these statement will simply bring one of its windows to the top.

This example prints using the Label form. If the Label window is already open it simply brings it to the top, otherwise it opens the form.

window "Clients:Label"
if error
    openform "Label"
endif
print dialog

This example updates an inventory database. It temporarily switches to the Inventory data sheet window to do the update, then switches back to the original window when it is done.

local wasWindow
wasWindow=info("windowname")
window "Inventory"
if error
    message "Sorry, cannot update inventory."
    stop
endif
find Description=fieldvalue("Invoice",Description)
if info("found")
    QtyOnHand=QtyOnHand-fieldvalue("Invoice","Qty")
endif
window wasWindow

This example is exactly the same as the previous example, except that it uses a secret invisible window instead of the data sheet.

local wasWindow
wasWindow=info("windowname")
window "Inventory:SECRET" // use secret window
if error
    message "Sorry, cannot update inventory."
    stop
endif
find Description= fieldvalue("Invoice",Description)
if info("found")
    QtyOnHand=QtyOnHand-fieldvalue("Invoice","Qty")
endif
window wasWindow

Note: Another way to do the same thing is to use the setactivedatabase statement.

Instead of bringing a window forward by name, this statement can also use the unique window number. This is especially important if there is more than one window open with the same name. Using the ID number allows every window to be uniquely identified, independent of the window name.

Here is a example that opens two databases, then brings the original window back to the top.

let wasWindowNumber = info("windownumber")
opendatabase "Contacts"
opendatabase "Payroll"
window wasWindowNumber

Unlike the examples earlier on this page, this code will always come back to the original window, even if there are other windows with the same name.


See Also


History

VersionStatusNotes
10.2UpdateNow allows the window to be specified by window ID number in addition to by name.
10.0No ChangeCarried over from Panorama 6.0.