SP_SLSF_OLD

SLSF_OLD()

  Short:
  ------
 SLSF_OLD() Sets and retrieves the file name and path for the
 OLD() help files

 Returns
 <cFileSpec>  => File path and name less extension

 Syntax
 SLSF_OLD([cNew])

 Description

 [cNew] optionally sets the path and/or filename.

 If [cNew] is passed, this is the value returned as
 well.

 Examples
  USE (SLSF_OLD() )                    // open the file

  SLSF_OLD("c:\hidden\XYZ123")            // sets the filespec
                                          // to XYZ123.DBF in
                                          // c:\HIDDEN

 Source: S_PATHS.PRG

SP_SLSF_LIST

SLSF_LIST()

  Short:
  ------
 SLSF_LIST() Sets and retrieves the file name and path for the
 LISTER() DBF file

 Returns
 <cFileSpec>  => File path and name less extension

 Syntax
 SLSF_LIST([cNew])

 Description

 [cNew] optionally sets the path and/or filename.

 If [cNew] is passed, this is the value returned as well.

 Examples
  USE (SLSF_LIST() )                    // open the file

  SLSF_LIST("c:\hidden\XYZ123")         // sets the filespec
                                          // to XYZ123.DBF in
                                          // c:\HIDDEN

 Source: S_PATHS.PRG

 

SP_SLSF_LABEL

SLSF_LABEL()

  Short:
  ------
 SLSF_LABEL() Sets and retrieves the file name and path for the
 CLABEL() label files

 Returns
 <cFileSpec>  => File path and name less extension

 Syntax
 SLSF_LABEL([cNew])

 Description

 [cNew] optionally sets the path and/or filename.

 If [cNew] is passed, this is the value returned as
 well.

 Examples
  USE (slsf_label() )                    // open the file

  SLSF_LABEL("c:\hidden\XYZ123")         // sets the filespec
                                          // to XYZ123.DBF in
                                          // c:\HIDDEN

 Source: S_PATHS.PRG

 

SP_SLSF_HELP

SLSF_HELP()

  Short:
  ------
 SLSF_HELP() Sets and retrieves the file name and path for the
 HELP() DBF file

 Returns
 <cFileSpec>  => File path and name less extension

 Syntax
 SLSF_HELP([cNew])

 Description

 [cNew] optionally sets the path and/or filename.

 If [cNew] is passed, this is the value returned as well.

 Examples
  USE (SLSF_HELP() )                    // open the file

  SLSF_HELP("c:\hidden\XYZ123")         // sets the filespec
                                          // to XYZ123.DBF in
                                          // c:\HIDDEN

 Source: S_PATHS.PRG

 

SP_SLSF_FORM

SLSF_FORM()

  Short:
  ------
 SLSF_FORM() Sets and retrieves the file name and path for the
 FORMLETR() DBF file

 Returns
 <cFileSpec>  => File path and name less extension

 Syntax
 SLSF_FORM([cNew])

 Description

 [cNew] optionally sets the path and/or filename.

 If [cNew] is passed, this is the value returned as well.

 Examples
  USE (SLSF_FORM() )                    // open the file

  SLSF_FORM("c:\hidden\XYZ123")         // sets the filespec
                                          // to XYZ123.DBF in
                                          // c:\HIDDEN

 Source: S_PATHS.PRG

 

SP_SLSF_COLOR

SLSF_COLOR()

  Short:
  ------
 SLSF_COLOR() Sets and retrieves the file name and path for the
 COLOR SET DBF file

 Returns
 <cFileSpec>  => File path and name less extension

 Syntax
 SLSF_COLOR([cNew])

 Description

 [cNew] optionally sets the path and/or filename.

 If [cNew] is passed, this is the value returned as well.

 Examples
  USE (SLSF_COLOR() )                    // open the file

  SLSF_COLOR("c:\hidden\XYZ123")         // sets the filespec
                                          // to XYZ123.DBF in
                                          // c:\HIDDEN

 Source: S_PATHS.PRG

 

SP_SLSF_APPT

SLSF_APPT()

  Short:
  ------
 SLSF_APPT() Sets and retrieves the file name and path for the
 SAPPOINT() DBF files

 Returns
 <cFileSpec>  => File path and name less extension

 Syntax
 SLSF_APPT([cNew])

 Description

 [cNew] optionally sets the path and/or filename.

 If [cNew] is passed, this is the value returned as well.

 Examples
  USE (SLSF_APPT() )                    // open the file

  SLSF_APPT("c:\hidden\XYZ123")         // sets the filespec
                                          // to XYZ123.DBF in
                                          // c:\HIDDEN

 Source: S_PATHS.PRG

 

SP_SLOTUSMENU

SLOTUSMENU()

  Short:
  ------
  SLOTUSMENU() 1-2-3 style menu

  Returns:
  --------
  <expReturn> => depends on several factors

  Syntax:
  -------
  SLOTUSMENU(nTop,nLeft,nBottom,nRight,aOptions,[lBox],;
        [lSaveRest],[lReset])

  Description:
  ------------
  Draws a 1-2-3 style menu from <nTop>,<nLeft> to
  <nTop+1>,<nRight>.

  <nTop> is the menu option line. <nTop+1> is the
  message line.

  <aOptions> is an array of arrays in the format:

  {  {cOption,cMessage,expAction},
  {cOption,cMessage,expAction},... }

  where <cOption> is the option prompt, <cMessage> is
  the option message, and <expAction> is the option action.

  <expAction> may be of three types:

      1.    a codeblock, in which case it is executed on
            ENTER

      2.    a submenu array of the form:

         {  {cOption,cMessage,expAction},  ;
             {cOption,cMessage,expAction},... }
            which is displayed on ENTER. Pressing ESCAPE
            from the submenu returns to the prior menu.

            The submenu <expaction> may be a codeblock,
            another subarray, or any other value, etc.
            Thus nesting can go as deep as you like.

      3.    any other value, which is returned to the
            calling program on ENTER.

  Pressing ESCAPE from the main menu returns 0

  [lBox]  If True, the menu is drawn inside of a popup
  box. Actual dimensions of the menu area then become
  <nTop>+1,<nLeft>+1 to <nTop>+2,<nRight>-1. Default is False - no box.

  [lSaveRest] If True, the underlying screen is saved
  and restored on entrance/exit. Default is False - no restore.

  [lReset] If True, the menu is reset to first option
  on exit. Default is False - menu remembers where it was.

  SLOTUSCLEAR() resets the menu.

  Examples:
  ---------

   proc test
   local nReturn := 0
   local aMain := {}
   local aSub1 := {{"Pizza",     "Eat Pizza", {||pizza()}},;
                   {"Spaghetti", "Eat Spaghetti", {||spagett()}},;
                   {"Tortellini","Eat Tortellini", {||tortellini()}} }

   local aSub2 := {{"Steak",     "Eat Steak", {||steak()}},;
                   {"Hamburger", "Eat Hamburger",  {||burgers()}},;
                   {"Chili Dog", "Eat Chili Dog",  {||burntwice()}}  }

   aadd(aMain,{"Italian","Eat Italian food",aSub1})
   aadd(aMain,{"American","Eat American food",aSub2})
   aadd(aMain,{"Quit","Just not hungry - Quit",0})
   aadd(aMain,{"Relief","Already ate - need Alka Seltzer",{||alka()} })

   SLOTUSMENU(0,0,0,79,aMain,.t.,.t.,.t.)

   SLOTUSCLEAR()  // !! always use this to clear the menu

  Notes:
  -------

  Always use SLOTUSCLEAR() after calling SLOTUSMENU()

  Source:
  -------
  S_LOTMEN.PRG

 

SP_SGETMANY

SGETMANY()

  Short:
  ------
  SGETMANY()    Virtual (scrolling)  gets in a popup box

  Returns:
  --------
  <lSave> => False if ESC pressed, true otherwise

  Syntax:
  -------
  SGETMANY(aGets,aDesc,nTop,nLeft,nBottom,nRight,[cTitle],[cFoot],[nPadding])

  Description:
  ------------
  READs a series of GETs in a popup box, with the
  ability to scroll the GETs up/down when there are more GETs than fit in
  the box.

  <aGets> is an array of get objects. There are two
  ways to create this:

      1.    Use GETNEW() (the Clipper function) to create each
            individual get object. Get row and column do not
            matter - they will be adjusted.

            GET postblock and preblock (valid and when)
            may be assigned as normal. As each new GET object is created,
            add it to an array.

            Pass this array as <aGets>.

      2.    Use the normal @row,col GET... commands, but to a
            location off the screen - otherwise the gets will DISPLAY
            as you are assigning them.

            @MAXROW()+1,MAXCOL()+1 GET... works for me.

  Using @...GET automatically places new get
  objects in the global array GETLIST. Pass GETLIST as <aGets>.

  <aDesc> this is an array of descriptions for each
  get. (the SAY portion). These will be displayed to the left of
  the get.

  <nTop,nLeft,nBottom,nRight> are the dimensions of the
  popup box. The Editing area will be the inside dimensions of this
  box. Make sure there's room!

  [cTitle] is a string to be used for the title.
  Displayed at <nTop>,<nLeft>+1

  [cFoot] is now ignored. This parameter used to be the footer. It
  is now just a placeholder for downward compatibility.

  [nPadding] is for the number of spaces of padding
  between the box frame and the editing area. The default is 0,
  which places the editing area at
  nTop+1,nLeft+1,nBottom-1,nRight-1. A [nPadding] of 1 would place
  the editing area at nTop+2,nLeft+2,nBottom-2,nRight-2 etc.

  Examples:
  ---------

   local i
   local aDesc := {}
   local aGets
   USE CUSTOMER
   aGets := dbf2array()

   for i = 1 to len(aGets)
     @maxrow()+1,maxcol()+1 get aGets[i]
     aadd(aDesc,field(i))
   next

   SGETMANY(getlist,aDesc,10,10,17,50,;
         "Editing","ESC quits, F10 saves",1)

  NOTES:
  -------
  Do not pass a 0 length string as a GET

  Source:
  -------
  S_GETMANY.PRG

 

SP_SFRR_HCODE

SFRR_HCODE()

  Short:
  ------
  SFRR_HCODE() Output report definition to .PRG code

  Returns:
  --------
  Nothing

  Syntax:
  -------
  SFRR_HCODE()

  Description:
  ------------
  SFRR_HCODE will present you with a menu-driven
  interface to allow selection of output options for a hard-coded
  .PRG file for a given saved report.

  You will be presented options for :
     SOURCE Report Definition and
     OUTPUT .PRG file name (you choose)

  Once these are selected, you may do a translation
  into .PRG code. The .PRG will do all of the setup needed to call
  SFRR_PMAIN() - the main print routine called by both REPORT()
  and QUICKREPORT().

  The .PRG will no longer require the SFREPORT.DBF in
  order to produce the report.

  This has been written as a function, so you may
  incorporate it easily.

  To produce a stand-alone .EXE to generate report
  .PRGs, you could do the following:

     initsup()

     USE SFREPORT

     sfrr_hcode()

  The resulting .PRGs must be called with DO <prgname>
  If you like, you could make them into a function by issuing a
  by issuing a FUNCTION <function name> at the top.

  Examples:
  ---------
   initsup()
   USE SFREPORT
   sfrr_hcode()

  Source:
  -------
  R_HCODE.PRG