DESCRIPTION
This manual entry describes the typical structure of a Rexx/Tk program and also provides information on using the Rexx/Tk functions.
A typical Rexx/Tk program will look like the following simple program:
/**/
Call RxFuncAdd 'TkLoadFuncs', 'rexxtk', 'TkLoadFuncs'
Call TkLoadFuncs
Call CreateWindow
/*
* This is a typical dispatch loop if you set the "rexx"
* options in the widgets to be a name of a subroutine that
* you write (like below).
*/
Do Forever
/*
* TkWait returns whatever you typed as the value of the
* "rexx" option for whatever control is pushed, moved,
* chosen, etc
*/
Interpret 'Call' TkWait()
End
/*
* Normally you never get here, as the QuitProgram procedure is
* called when the top level window is closed.
*/
/*
* Always call TKDropFuncs at the end of the program, particularly
* under OS/2, otherwise you will be left with the created windows
* and no way to close them!
*/
Call TkDropFuncs
Return 0
CreateWindow:
/*
* make a menu that will be our main window menubar
*/
menubar = TkMenu('.m1')
If rc \= 0 Then Call Abort
/*
* Add a File menu to the menubar. The file menu will 'cascade' off of the menu bar
*/
menu = TkMenu(menubar'.m1','-tearoff', 0)
If tkrc \= 0 Then Call Abort
label = 'File'
Call TkAdd menubar, 'cascade', 'label', 'menu',
If tkrc \= 0 Then Call Abort
/*
* now add items to the File menu; just a Quit for now
*/
Call TkAdd menu, 'command', '-label', 'Quit', '-rexx', 'QuitProgram'
If tkrc \= 0 Then Call Abort
/*
* attach the menubar to the main window
*/
Call TkConfig '.', '-menu', menubar
If tkrc \= 0 Then Call Abort
Return 0
Abort:
Say 'Error in program:' TkError()
/*
* Always call TKDropFuncs at the end of the program, particularly
* under OS/2, otherwise you will be left with the created windows
* and no way to close them!
*/
Call TkDropFuncs
Exit
QuitProgram: Procedure
Say 'Exiting from sample...'
/*
* Always call TKDropFuncs at the end of the program, particularly
* under OS/2, otherwise you will be left with the created windows
* and no way to close them!
*/
Call TkDropFuncs
Exit
Some usage notes
Some general design notes
In general, the names of the Rexx/Tk functions match the names of the Tk commands with
the same functionality.
eg Tk: menu Rexx/Tk: TkMenu
Where a Tk command has sub-commands; and most do, the
equivalent Rexx/Tk function will be named as the Tk command and the Tk sub-command.
eg. Tk: menu post Rexx/Tk: TkMenuPost
Where a Tk sub-command is common between multiple Tk commands; like configure, Rexx/Tk defines a common function; TkConfig (yes its an abbreviation!)
Where a Tk widget allows the creation of another object type within that
widget, the Rexx/Tk function will not use the full Tk sub-command strings
eg. canvas create oval Rexx/Tk: TkCanvasOval