home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 February / PCWK0296.iso / sharewar / os2 / program / liberty / windows.txt < prev    next >
Text File  |  1995-02-02  |  27KB  |  737 lines

  1.  
  2. (You may want to pick a smaller font, or turn word-wrap off in your OS/2
  3.  system editor if this file is hard to read.)
  4.  
  5.   WINDOW DEVICE COMMANDS
  6.   ---------------------------------------------------------------------------
  7.  
  8.   In Liberty BASIC windows are treated like files, and we can refer
  9.   to anything in this class as a BASIC 'Device'.  To open a window
  10.   we use the OPEN statement, and to close the window we use the
  11.   CLOSE statement.  To control the window we 'print' to it, just as
  12.   we would print to a file.  The commands are sent as strings to the
  13.   device.  As a simple example, here we will open a graphics window,
  14.   center a pen (like a Logo turtle), and draw a simple spiral.  We
  15.   will then pause by opening a simple dialog.  When you confirm the
  16.   exit, we will close the window:
  17.  
  18.     button #graph, Exit, [exit], LR, 5, 5    'window will have a button 
  19.     open "Example" for graphics as #graph    'open graphics window
  20.     print #graph, "up"                     'make sure pen is up
  21.     print #graph, "home"                   'center the pen
  22.     print #graph, "down"                   'make sure pen is down
  23.     for index = 1 to 30                    'draw 30 spiral segments
  24.       print #graph, "go "; index           'go foreward 'index' places
  25.       print #graph, "turn 118"             'turn 118 degrees
  26.     next index                             'loop back 30 times
  27.     print #graph, "flush"                  'make the image 'stick'
  28.  
  29.   [inputLoop]
  30.     input b$ : goto [inputLoop]            'wait for button press
  31.  
  32.   [exit]
  33.     confirm "Close Window?"; answer$       'dialog to confirm exit
  34.     if answer$ = "no" then [inputLoop]     'if answer$ = "no" loop back
  35.     close #graph
  36.  
  37.   end
  38.  
  39.  
  40.  
  41.   WINDOW TYPES:
  42.   -------------------------------------------------------------------------
  43.  
  44.   Liberty BASIC provides different kinds of window types, to which you
  45.   can add as many buttons as needed.  Here's a list of the different kinds:
  46.  
  47.     graphics
  48.         - open a graphic window
  49.     graphics_fs
  50.         - open a graphic window full screen (size of the screen)
  51.     graphics_nsb
  52.         - open a graphic window w/no scroll bars
  53.     graphics_fs_nsb
  54.         - open a graphic window full screen, w/no scroll bars
  55.  
  56.     dialog
  57.         - open a dialog box window
  58.  
  59.     text
  60.         - open a text window
  61.     text_fs
  62.         - open a text window full screen (size of the screen)
  63.     text_nsb
  64.         - open a text window w/no scroll bars
  65.     text_fs_nsb
  66.         - open a text window full screen, w/no scroll bars
  67.  
  68.  
  69.   The way that you would specify what kind of window to open would be
  70.   as follows:
  71.  
  72.     open "Window Title" for type   as #handle
  73.  
  74.   where type  would be one of the above descriptors.
  75.  
  76.  
  77.   CONTROLLING SIZE AND PLACEMENT OF WINDOWS
  78.   ----------------------------------------------------------------------------
  79.  
  80.   The size and placement of any window can be easily determined before
  81.   it is opened in Liberty BASIC (except for any window type with a _fs in its
  82.   descriptor).  If you do choose not to specify the size and placement of
  83.   the windows that your programs open, Liberty BASIC will pick default sizes.
  84.   However, for effect it is often best that you exercise control over this matter.
  85.  
  86.   There are four special variables that you can set to select the size and
  87.   placement of your windows, whether they be text, graphics, or
  88.   spreadsheet:
  89.  
  90.           UpperLeftX, UpperLeftY, WindowWidth, and WindowHeight
  91.  
  92.   Set UpperLeftX and UpperLeftY to the number of pixels from the
  93.   upper-left corner (IN OS/2, FROM THE LOWER LEFT-CORNER) of the screen to
  94.   position the window.  Usually, determining the distance from the
  95.   upper-left corner of the screen is not as important as determining the 
  96.   size of the window.
  97.  
  98.   Set  WindowWidth and WindowHeight to the number of pixels wide and
  99.   high that you want the window to be when you open it.
  100.  
  101.   Once you have determined the size and placement of your window, then
  102.   open it.  Here is an example:
  103.  
  104.  
  105.   [openStatus]
  106.  
  107.       UpperLeftX = 32
  108.       UpperLeftY = 32
  109.       WindowWidth = 190
  110.       WindowHeight = 160
  111.  
  112.       open "Status Window" for dialog as #stats
  113.  
  114.  
  115.   This will open a window 32 pixels from the corner of the screen, and with
  116.   a width of 190 pixels, and a height of 160 pixels.
  117.  
  118.  
  119.  
  120.   BUTTONS
  121.   ---------------------------------------------------------------------------
  122.  
  123.  Buttons are easily added to Liberty BASIC windows.  The format is simple:
  124.  
  125.     button #handle, "Label", [branchLabel], corner, distX, distY
  126.     open "A Window!" for graphics as #handle
  127.  
  128.   By placing at least one button statement before  the open statement, we can
  129.   add button(s) to the window.  Let's examine each part of the button statement:
  130.  
  131.     #handle - This needs to be the same as the handle of the window.
  132.  
  133.     "Label" - This is the text displayed on the button.  If only one word is used,
  134.                           then the quotes are optional.
  135.  
  136.     [branchLabel] - This controls what the button does.  When the user clicks
  137.                                   on the button, then program execution continues at
  138.                                   [branchLabel] as if the program had encountered a
  139.                                   goto [branchLabel] statement.
  140.  
  141.     corner, distX, distY - Corner is used to indicate which corner of the
  142.                                    window to anchor the button to.  DistX and distY
  143.                                    specify how far from that corner in x and y to place
  144.                                    the button.  The following values are permitted for
  145.                                    corner:
  146.  
  147.                       UL - Upper Left Corner
  148.                       UR - Upper Right Corner
  149.                       LL - Lower Left Corner
  150.                       LR - Lower Right Corner
  151.  
  152.   Whenever a running program sits idle at an input statement, it is possible
  153.   for a button-press to effect some action.  If any button is pressed while
  154.   the program is busy doing something else, the button-press will be
  155.   buffered and read later when an input statement is encountered.
  156.  
  157.  
  158.  
  159.   GRAPHICS
  160.   ---------------------------------------------------------------------------------------
  161.  
  162. (IN THIS BETA VERSION, NOT ALL OF THE LISTED COMMANDS ARE COMPLETELY
  163. SUPPORTED)
  164.  
  165.   Because graphics can involve many detailed drawing operations,
  166.   Liberty BASIC does not force you to use just one print # statement
  167.   for each drawing task.  If you want to perform several operations
  168.   you can use a single line for each as such:
  169.  
  170.     print #handle, "cls"
  171.     print #handle, "fill black"
  172.     print #handle, "pen up"
  173.     print #handle, "home"
  174.     print #handle, "pen down"
  175.     print #handle, "north"
  176.     print #handle, "go 50"
  177.  
  178.   Or if you prefer:
  179.  
  180.     print #handle, "cls ; fill black ; pen up ; home ; pen down ; north ; go 50"
  181.  
  182.   will work just as well, and executes slightly faster.
  183.  
  184.  
  185.   print #handle, "\text"
  186.  
  187.     Display text at the current pen position.  Each additional \ in the
  188.     text will cause a carraige return and line feed.  Take for example,
  189.     print #handle, "\text1\text2" will cause text1 to be printed at the
  190.     pen position, and then text2 will be displayed directly under text1.  
  191.  
  192.  
  193.   print #handle, "cls"
  194.  
  195.     Clear the graphics window to white, erasing all drawn elements
  196.  
  197.  
  198.   print #handle, "fill COLOR"
  199.  
  200.     Fill the window with COLOR.  For a list of accepted colors see
  201.     the color command below.
  202.  
  203.  
  204.   print #handle, "up"
  205.  
  206.     Lift the pen up.  All go or goto commands will now only move the
  207.     pen to its new position without drawing.  Any other drawing 
  208.     commands will simply be ignored until the pen is put back down.
  209.  
  210.  
  211.   print #handle, "down"
  212.  
  213.     Just the opposite of up.  This command reactivates the drawing
  214.     process.
  215.  
  216.  
  217.   print #handle, "color COLOR"
  218.  
  219.     Set the pen's color to be COLOR.
  220.  
  221.     Here is a list of valid colors (in alphabetical order):
  222.  
  223.       black, blue, brown, cyan, darkblue, darkcyan, darkgray,
  224.       darkgreen, darkpink, darkred, green, lightgray, palegray,
  225.       pink, red, white, yellow
  226.  
  227.   print #handle, "backcolor COLOR"
  228.  
  229.     This command sets the color used when drawn figures are filled with a
  230.     color.  The same colors are available as with the color command above.
  231.  
  232.   print #handle, "goto X Y"
  233.  
  234.     Move the pen to position X Y.  Draw if the pen is down.
  235.  
  236.  
  237.   print #handle, "place X Y"
  238.  
  239.     Position the pen at X Y.  Do not draw even if the pen is down.
  240.  
  241.  
  242.   print #handle, "go D"
  243.  
  244.     Go foreward D distance from the current position, and going in the
  245.     current direction.
  246.  
  247.  
  248.   print #handle, "north"
  249.  
  250.     Set the current direction to 270 (north).  Zero degrees points to the
  251.     right (east), 90 points down (south), and 180 points left (west).
  252.  
  253.  
  254.   print #handle, "turn A"
  255.  
  256.     Turn from the current direction using angle A and adding it to the
  257.     current direction.  A can be positive or negative.
  258.  
  259.  
  260.   print #handle, "line X1 Y1 X2 Y2"
  261.  
  262.     Draw a line from point X1 Y1 to point X2 Y2.  If the pen is up, then
  263.     no line will be drawn, but the pen will be positioned at X2 Y2.
  264.  
  265.  
  266.   print #handle, "posxy"
  267.  
  268.     Return the position of the pen in x, y.  This command must be followed by:
  269.  
  270.       input #handle, xVar, yVar
  271.  
  272.     which will assign the pen's position to xVar & yVar
  273.  
  274.  
  275.   print #handle, "size S"
  276.  
  277.     Set the size of the pen to S.  The default is 1.  This will affect the
  278.     thickness of lines and figures plotted with most of the commands
  279.     listed in this section.
  280.  
  281.  
  282.   print #handle, "flush"
  283.  
  284.     This ensures that drawn graphics 'stick'.  Make sure to issue this
  285.     command at the end of a drawing sequence to ensure that when the
  286.     window is resized or overlapped and redrawn, its image will be
  287.     retained.  To each group of drawn items that is terminated with flush,
  288.     there is assigned a segment ID number.  See segment below.
  289.  
  290.  
  291.   print #handle, "print"
  292.  
  293.     Send the plotted image to the Windows Print Manager for output.
  294.  
  295.  
  296.   print #handle, "font facename width height"
  297.  
  298.     Set the pen's font to the specified face, width and height.  If an
  299.     exact match cannot be found, then Liberty BASIC will try to find a
  300.     close match, with size being of more prominance than face.
  301.  
  302.  
  303.   print #handle, "circle r"
  304.  
  305.     Draw a circle with radius r at the current pen position.
  306.  
  307.  
  308.   print #handle, "circlefilled r"
  309.  
  310.     Draw a circle with radius r, and filled with the color specified using
  311.     the command backcolor (see above).
  312.  
  313.  
  314.   print #handle, "box x y"
  315.  
  316.     Draw a box using the pen position as one corner, and x, y as the
  317.     other corner.   print #handle, "boxfilled x y"
  318.  
  319.     Draw a box  using the pen position as one corner, and x, y as the other corner.
  320.     Fill the box with the color specified using the command backcolor (see above).
  321.  
  322.  
  323.   print #handle, "ellipse w h"
  324.  
  325.     Draw an ellipse at the pen position of width w and height h.
  326.  
  327.  
  328.   print #handle, "ellipsefilled  w h"
  329.  
  330.     Draw an ellipse at the pen position of width w and height h.  Fill the ellipse
  331.     with the color specified using the command backcolor (see above).
  332.  
  333.  
  334.   print #handle, "segment"
  335.  
  336.     This causes the window to return the segment ID of the most recently
  337.     flushed drawing segment.  This segment ID can then be retrieved
  338.     with an input #handle, varName and varName will contain the segment
  339.     ID number.  Segment ID numbers are useful for manipulating different
  340.     parts of a drawing.  For an example, see delsegment below.
  341.  
  342.  
  343.   print #handle, "delsegment n"
  344.  
  345.     This causes the drawn segment identified as n to be removed from the
  346.     window's list of drawn items.  Then when the window is redrawn the
  347.     deleted segment will not be included in the redraw.
  348.  
  349.  
  350.   print #handle, "redraw"
  351.  
  352.     This will cause the window to redraw all flushed drawn segments.  Any
  353.     deleted segments will not be redrawn (see delsegment above).  Any items
  354.     drawn since the last flush will not be redrawn either, and will be lost.
  355.  
  356.  
  357.   print #handle, "discard"
  358.  
  359.     This causes all drawn items since the last flush to be discarded, but does not
  360.     not force an immediate redraw, so the items that have been discarded will
  361.     still be displayed until a redraw (see above).
  362.  
  363.  
  364. print #handle, "trapclose branchLabel" 
  365. (NOT SUPPORTED IN OS/2 v0.2 BETA)
  366.  
  367.     This will tell Liberty BASIC to continue execution of the program at 
  368.     branchLabel if the user double clicks on the system menu box
  369.     or pulls down the system menu and selects close (see buttons1.bas
  370.     example below).
  371.  
  372.  
  373. {Illustration was here}
  374.  
  375.  
  376.   The trapclose code in buttons1.bas looks like this:
  377.  
  378.     open "This is a turtle graphics window!" for graphics_nsb as #1
  379.     print #1, "trapclose [quit]"
  380.  
  381. [loop]    ' stop and wait for buttons to be pressed
  382.     input a$
  383.     goto [loop]
  384.  
  385.  
  386.   And then the code that is executed when the window is closed looks like this:
  387.  
  388. [quit]
  389.     confirm "Do you want to quit Buttons?"; quit$
  390.     if quit$ = "no" then [loop]
  391.     close #1
  392.     end
  393.  
  394.  
  395.   Since this only works when the program is halted at an input statement, the
  396.   special variable TrapClose permits detection of the window close when you
  397.   are running a continuous loop that doesn't stop to get user input.  As long as
  398.   TrapClose <> "true", then the window has not been closed.  Once it has been
  399.   determined that TrapClose = "true", then it must be reset to "false" via the
  400.   BASIC LET statement.  See clock.bas for an example. 
  401.  
  402.   print #handle, "when event branchLabel"
  403.  
  404.     This tells the window to process mouse events.  These events occur
  405.     when someone clicks, double-clicks, drags, or just moves the mouse
  406.     inside of the graphics window.  This provides a really simple mechanism
  407.     for controlling flow of a program which uses the graphics window.  For
  408.     an example, see the program draw1.bas.
  409.  
  410.     Sending print #handle, "when leftButtonDown [startDraw]" to any
  411.     graphics window will tell that window to force a goto [startDraw] when
  412.     the mouse points inside of that window and someone press the left mouse
  413.     button down.
  414.  
  415.     Whenever a mouse event does occur, Liberty BASIC places the x and y
  416.     position of the mouse in the variables MouseX, and MouseY.  The
  417.     values will represent the number of pixels in x and y the mouse was from
  418.     the upper left corner of the graphic window display pane.
  419.  
  420.     If the expression print #handle, "when event" is used, then trapping
  421.     for that event is discontinued.  It can however be reinstated at any time.
  422.  
  423.     Events that can be trapped:
  424.  
  425.       leftButtonDown - the left mouse button is now down
  426.       leftButton Up - the left  mouse button has been released
  427.       leftButtonMove - the mouse moved while the left button is down
  428.       leftButtonDouble - the left button has been double-clicked
  429.       rightButtonDown - the right mouse button is now down
  430.       rightButton Up - the right  mouse button has been released
  431.       rightButtonMove - the mouse moved while the right button is down
  432.       rightButtonDouble - the right button has been double-clicked
  433.       mouseMove - the mouse moved when no button was down
  434.  
  435.  
  436.   PROGRAMMING DIALOG BOXES
  437.   ---------------------------------------------------------------------------------------
  438.  
  439.   Using windows of type dialog, we can add several kinds of objects (called 
  440.   child windows) in addition to buttons and menus to our Liberty BASIC 
  441.   programs.  These let us add functionality and visual appeal.
  442.   
  443.   Below are kinds of child windows we can add:
  444.  
  445.   LISTBOX
  446.   ---------------------------------------------------------------------------------------
  447.  
  448.   Listboxes in Liberty BASIC can be added to any  windows that are of type
  449.   graphics, window, and dialog.  They provide a list selection capability to your
  450.   Liberty BASIC programs.  You can control the contents, position, and size
  451.   of the listbox, as well as where to transfer execution when an item is selected.
  452.   The listbox is loaded with a collection of strings from a specified string array,
  453.   and a reload command updates the contents of the listbox from the array
  454.   when your program code changes the array.
  455.  
  456.  
  457.   Here is the syntax:
  458.  
  459.   LISTBOX #handle.ext, array$(, [branchLabel], xPos, yPos, wide, high
  460.  
  461.     #handle.ext  -  The #handle part of this item needs to be the same as the
  462.                 handle of the window you are adding the listbox to.  The .ext
  463.                 part needs to be unique so that you can send commands to the
  464.                 listbox and get information from it later.
  465.  
  466.     array$(  -  This is the name of the array (must be a string array) that contains
  467.                 the contents of the listbox.  Be sure to load the array with
  468.                 strings before you open the window.  If some time later you
  469.                 decide to change the contents of the listbox, simply change
  470.                 the contents of the array and send a reload command.
  471.  
  472.     [branchLabel]  -  This is the branch label where execution begins when
  473.                 the user selects an item from the listbox by double-clicking.
  474.                 Selection by only single clicking does not cause branching
  475.                 to occur.
  476.  
  477.     xPos & yPos  -  This is the distance in x and y (in pixels) of the listbox from
  478.                 the upper-left corner of the window.
  479.  
  480.     wide & high  -  This determines just how wide and high (in pixels) the
  481.                 listbox is.
  482.  
  483.  
  484.     Here are the commands for listbox:
  485.  
  486.  
  487.   print #handle.ext, "select string"
  488.  
  489.     Select the item the same as string and update the display.
  490.  
  491.  
  492.   print #handle.ext, "selectindex i"
  493.  
  494.     Select the item at index position i and update the display.
  495.  
  496.   print #handle.ext, "selection?"
  497.  
  498.     Return the selected item.  This must be followed by the statement:
  499.  
  500.       input #handle.ext, selected$
  501.  
  502.     This will place the selected string into selected$.  If there is no selected
  503.     item, then selected$ will be a string of zero length (a null string).
  504.  
  505.  
  506.   print #handle.ext, "reload"
  507.  
  508.     This will reload the listbox with the current contents of its array and will
  509.     update the display.
  510.  
  511.  
  512.       ' Sample program.  Pick a contact status
  513.  
  514.         options$(0) = "Cold Contact Phone Call"
  515.         options$(1) = "Send Literature"
  516.         options$(2) = "Follow Up Call"
  517.         options$(3) = "Send Promotional"
  518.         options$(4) = "Final Call"
  519.  
  520.         listbox #status.list, options$(, [selectionMade], 5, 35, 250, 90
  521.         button #status, Continue, [selectionMade], UL, 5, 5
  522.         button #status, Cancel, [cancelStatusSelection], UR, 15, 5
  523.         WindowWidth = 270 : WindowHeight = 180
  524.         open "Select a contact status" for window as #status
  525.  
  526.       input r$
  527.  
  528.   [selectionMade]
  529.       print #status.list, "selection?"
  530.       input #status.list, selection$
  531.       notice selection$ + " was chosen"
  532.       close #status
  533.       end
  534.  
  535.   [cancelStatusSelection]
  536.       notice "Status selection cancelled"
  537.       close #status
  538.       end
  539.  
  540.   Control of the listbox in the sample program above is provided by printing
  541.   commands to the listbox, just as with general window types in Liberty BASIC.
  542.   We gave the listbox the handle #status.list, so to find out what was selected, we
  543.   use the statement print #status.list, "selection?".  Then we must perform an
  544.   input, so we use input #status.list, selection$, and the selected item is placed
  545.   into selection$.  If the result is a string of length zero (a null string), this means
  546.   that there is no item selected.
  547.  
  548.   COMBOBOX
  549.   ---------------------------------------------------------------------------------------
  550.  
  551.   Comboboxes are a lot like listboxes, but they are designed to save space.
  552.   Instead of showing an entire list of items, they show only the selected one.  If
  553.   you don't like the selection, then you click on its button (to the right), and a list
  554.   appears.  Then you can browse the possible selections, and pick one if so
  555.   desired.  When the selection is made, the new selection is displayed in place of
  556.   the old.  If you don't want to make a new selection, just click on the combobox's
  557.   button again, and the list will disappear.
  558.  
  559.   Comboboxes in Liberty BASIC can be added to any  windows that are of type
  560.   graphics, window, and dialog.  They provide a list selection capability to your
  561.   Liberty BASIC programs.  You can control the contents, position, and size
  562.   of the combobox, as well as where to transfer execution when an item is
  563.   selected.  The combobox is loaded with a collection of strings from a specified
  564.   string array,  and a reload command updates the contents of the combobox from
  565.   the array when your program code changes the array.
  566.  
  567.  
  568.   Here is the syntax:
  569.  
  570.   COMBOBOX #handle.ext, array$(, [branchLabel], xPos, yPos, wide, high
  571.  
  572.     #handle.ext  -  The #handle part of this item needs to be the same as the
  573.                 handle of the window you are adding the listbox to.  The .ext
  574.                 part needs to be unique so that you can send commands to the
  575.                 listbox and get information from it later.
  576.  
  577.     array$(  -  This is the name of the array (must be a string array) that contains
  578.                 the contents of the listbox.  Be sure to load the array with
  579.                 strings before you open the window.  If some time later you
  580.                 decide to change the contents of the listbox, simply change
  581.                 the contents of the array and send a reload command.
  582.  
  583.     [branchLabel]  -  This is the branch label where execution begins when
  584.                 the user selects an item from the listbox by double-clicking.
  585.                 Selection by only single clicking does not cause branching
  586.                 to occur.
  587.  
  588.     xPos & yPos  -  This is the distance in x and y (in pixels) of the listbox from
  589.                 the upper-left corner of the window.
  590.  
  591.     wide & high  -  This determines just how wide and high (in pixels) the
  592.                 listbox is.  Height refers to how far down the selection list
  593.                 reaches when the combobox's button is clicked, not to the
  594.                 size of the initial selection window.
  595.  
  596.  
  597.     Here are the commands for combobox:
  598.  
  599.  
  600.   print #handle.ext, "select string"
  601.  
  602.     Select the item the same as string and update the display.
  603.  
  604.   print #handle.ext, "selectindex i"
  605.  
  606.     Select the item at index position i and update the display.
  607.  
  608.  
  609.   print #handle.ext, "selection?"
  610.  
  611.     Return the selected item.  This must be followed by the statement:
  612.  
  613.       input #handle.ext, selected$
  614.  
  615.     This will place the selected string into selected$.  If there is no selected
  616.     item, then selected$ will be a string of zero length (a null string).
  617.  
  618.  
  619.   print #handle.ext, "reload"
  620.  
  621.     This will reload the listbox with the current contents of its array and will
  622.     update the display.
  623.  
  624.  
  625.   For a sample program, see the included file dialog3.bas.
  626.  
  627.   TEXTBOX
  628.   ---------------------------------------------------------------------------------------
  629.  
  630.   The textbox command lets you add a single item, single line text entry/editor
  631.   box to your windows.  It is useful for generating forms in particular.
  632.  
  633.   The syntax for textbox is simply:
  634.  
  635.   TEXTBOX #handle.ext, xpos, ypos, wide, high
  636.  
  637.   #handle.ext  -  The #handle part must be the same as for the window you
  638.                 are adding the textbox to.  The .ext part must be unique for
  639.                 the textbox.
  640.  
  641.   xpos & ypos  -  This is the position of the textbox in x and y from the upper-
  642.                 left corner of the window.
  643.  
  644.   wide & high  -  This is the width and height of the textbox in pixels.
  645.  
  646.  
  647.   Textbox only understands two commands.  These are:
  648.  
  649.     print #handle.ext, "a string"
  650.  
  651.       This sets the contents of the textbox to be "a string".
  652.  
  653.  
  654.     print #handle.ext, "!contents?"
  655.  
  656.       This fetches the contents of the textbox.  This must be followed by:
  657.  
  658.     input #handle.ext, varName$
  659.  
  660.       The contents will be placed into varName$
  661.  
  662.  
  663.   ' sample program
  664.  
  665.     textbox #name.txt, 20, 10, 260, 25
  666.     button #name, "OK", [titleGraph], LR, 5, 0
  667.     WindowWidth = 350 : WindowHeight = 90
  668.     open "What do you want to name this graph?" for window_nf as #name
  669.     print #name.txt, "untitled"
  670.  
  671. [mainLoop]
  672.     input wait$
  673.  
  674. [titleGraph]
  675.     print #name.txt, "!contents?"
  676.     input #name.txt, graphTitle$
  677.     notice "The title for your graph is: "; graphTitle$
  678.     close #name
  679.     end
  680.  
  681.   STATICTEXT
  682.   ---------------------------------------------------------------------------------------
  683.  
  684.   Statictext lets you place instructions or labels into your windows.  This is most
  685.   often used with a textbox to describe what to type into it.
  686.  
  687.   The syntax of this command is:
  688.  
  689.   STATICTEXT #handle, "string", xpos, ypos, wide, high
  690.  
  691.   #handle  -  This must be the same as the #handle of the window you are
  692.                 adding the statictext to.
  693.  
  694.   "string"  -  This is the text component of the statictext.
  695.  
  696.   xpos & ypos  -  This is the distance of the statictext in x and y (in pixels) from
  697.                 the upper-left corner of the screen.
  698.  
  699.   wide & high  -  This is the width and height of the statictext.  You must specify
  700.                 enough width and height to accomodate the text in "string".
  701.  
  702.  
  703.     'sample program
  704.  
  705.     statictext #member, "Name", 10, 10, 40, 18
  706.     statictext #member, "Address", 10, 40, 70, 18
  707.     statictext #member, "City", 10, 70, 60, 18
  708.     statictext #member, "State", 10, 100, 50, 18
  709.     statictext #member, "Zip", 10, 130, 30, 18
  710.  
  711.     textbox #member.name, 90, 10, 180, 25
  712.     textbox #member.address, 90, 40, 180, 25
  713.     textbox #member.city, 90, 70, 180, 25
  714.     textbox #member.state, 90, 100, 30, 25
  715.     textbox #member.zip, 90, 130, 100, 25
  716.  
  717.     button #member, "&OK", [memberOK], UL, 10, 160
  718.  
  719.     WindowWidth = 300 : WindowHeight = 230
  720.     open "Enter Member Info" for dialog as #member
  721.  
  722.     input r$
  723.  
  724. [memberOK]
  725.     print #member.name, "!contents?" : input #member.name, name$
  726.     print #member.address, "!contents?" : input #member.address, address$
  727.     print #member.city, "!contents?" : input #member.city, city$
  728.     print #member.state, "!contents?" : input #member.state, state$
  729.     print #member.zip, "!contents?" : input #member.zip, zip$
  730.     cr$ = chr$(13)
  731.     note$ = name$ + cr$ + address$ + cr$ + city$ + cr$ + state$ + cr$ + zip$
  732.     notice "Member Info" + cr$ + note$
  733.  
  734.     close #member
  735.     end
  736.  
  737.