SP Internal Datafile Structures

SCROLLER.DBF

  SMODULE        C       8    Calling Proc
  SFIELD         C       10   Calling variable
  SDESCR         C       25   Description/box title
  SSTRING        C       160  Display expression
  SRETURN        C       75   Return expression
  SDBFILE        C       8    DBF file
  SIND           C       8    Index file

HELP.DBF

  H_MOD          C       10   Calling Proc
  H_VAR          C       10   Calling variable
  H_MEMO         M       10   Help text
  HW_T           N       2    Window top
  HW_L           N       2    Window Left
  HW_B           N       2    Window Bottom
  HW_R           N       2    Window right

PLIST.DBF

  DESC           C      45    Description of list
  LIST           C      200   Delimited string of list

FORM.DBF

  DESCRIPT       C       50   Description of the form
  MEMO_ORIG      M       10   Form letter


TODO.DBF

  CATEGORY       C       10   Category of item
  ITEM           C       60   Item description
  PRIORITY       C       2    Priority of item
  DOBY           D       8    Do by date
  DONE           L       1    Done marker
  LONG_DESC      C       231  Long description

QUERIES.DBF

  DBF            C      12    DBF query built for
  DES            C      30    Description of query
  FQUERY         C      220   Query expression


SFREPORT.DBF

  SF_DBF         C   8    Dbf name
  SF_NDXKEY      C   60   Sort key(index)
  SF_MAJKEY      C   60   Major sort key
  SF_MINKEY      C   60   Minor sort key
  SF_TITLE       C   35   Report name
  SF_MAJTEXT     C   25   Major key text
  SF_MINTEXT     C   25   Minor key text
  SF_WIDTH       N   3    Pg width chrs
  SF_LENGTH      N   3    Pg length lines
  SF_LEFTM       N   2    Left margin
  SF_TOPM        N   2    Top margin
  SF_SPACE       N   1    Line spacing
  SF_PAUSE       L   1    Pause between
  SF_NPLINES     N   1    Lines left
  SF_EJB4        L   1    Eject b4 report
  SF_EJAFT       L   1    Eject aftreport
  SF_EJMAJOR     L   1    Eject on Major
  SF_EJMINOR     L   1    Eject on Minor
  SF_EJGRAND     L   1    Eject b4 Grand
  SF_UNTOTAL     L   1    Underline ttals
  SF_MAJCHR      C   1    Major underline char
  SF_MINCHR      C   1    Minor underline char
  SF_NHEAD       N   1    # header lines
  SF_NFOOT       N   1    # footer lines
  SF_NTITL       N   1    # title lines
  SF_TSEP        C   1    Title separation char
  SF_COLSEP      C   1    Col sep char
  SF_CSEPWID     N   1    Col sep width
  SF_LINESEP     C   1    Line sep char
  SF_NCOLS       N   2    # columns
  SF_FEET        M   10   Footer contents
  SF_HEADS       M   10   Header contents
  SF_STDHEAD     L   1    Use standard header
  SF_DETAILS     M   10   Detail contents
  SF_QUERY       C   100  Last used query
  SF_FULLSUM     C   1    Full / summary
  SF_PRNCODE     C   50   Printer code pre-report
  SF_AFTCODE     C   50   Printer code post-report

CLABEL.DBF

  DESCRIPT       C   60      Description
  WIDTH          N   2       Label width
  SPACESBETW     N   2       Spaces between labels
  LINESBETW      N   2       Lines between labels
  ACROSS         N   2       Labels across
  LMARGIN        N   2       Left margin
  HEIGHT         N   2       Label height (lines)
  SETUPCODE      C   60      Pre print setup code
  EXITCODE       C   60      Post print code
  CONTENTS       M   10      Label contents
  PRNPORT        C   10      Printer port
  SHEETS         L   1       Using hand-fed sheets?
  LBLSPAGE       N   3       Labels per page
  TOPMARG        N   2       Top margin (lines)
  PAUSE          L   1       Pause between pages
  EJECT          L   1       Eject each page
  DBFNAME        C   8       DBF name
COLORS.DBF

  SETNAME        C  40    Set name
  DMAINCOL       C  40    SLS_NORMCOL() setting
  DMAINMENU      C  40    SLS_NORMMENU() setting
  DPOPCOL        C  40    SLS_POPCOL() setting
  DPOPMENU       C  40    SLS_POPMENU() setting
  DFRAME         C  40    SLS_FRAME() setting
  DSHADATT       N   3    SLS_SHADATT() setting
  DSHADPOS       N   1    SLS_SHADPOS() setting
  DEXPLODE       L   1    SLS_XPLODE()  setting

APPOINT.DBF

  DATE           C   8   Appointment date
  TIME           C   5   Appointment time
  DESC           C  65   Description

 

SLOLDS.DBF

  TOPIC C 35
  KEYS  M
  TEXT  M

 

SP_SCROLLER

SCROLLER()

  Short:
  ------
  SCROLLER() Hotkey lookup tables with dbf storage

  Returns:
  --------
  nothing

  Syntax:
  -------
  SET KEY xxx TO SCROLLER

  Description:
  ------------
  Scroller is a hotkey lookup table engine.

  Scroller is data-driven , meaning it operates on data
  stored external to

  the EXE in SCROLLER.DBF.

  SCROLLER() is called via a SET KEY. When called, it
  receives the parameters <cProc> and <cVar> from Clipper, telling
  it the proc and variable the user was sitting on when he pressed
  the hotkey.

  The actual parameters rec'd are <cProc> (proc name),
  <cLine> (line #) and <cVar> (variable name) .<cLine> is ignored,
  but it is included as the 2nd parameter because it is passed by
  Clipper's setkey routines.

  SCROLLER() attempts to find a corresponding record in
  SCROLLER.DBF (which contains fields for proc name and variable).
  SCROLLER.DBF is a storage place for lookup definitions.

  If SCROLLER does not find a matching record, it
  simply closes SCROLLER.DBF and returns to the previous area. It
  then displays a 'lookup table not found' message.

  If SCROLLER finds a matching record, it loads the
  values into memory and closes SCROLLER.DBF. It then opens the
  DBF [and index] of the lookup dbf in the next available area. If
  it is unable to open the dbf, it displays an error message and
  goes back to the previously selected area.

  SCROLLER then draws a box, using the DESCRIPTION
  field as the title, initializes a 1 element array composed of
  the SSTRING (see structure)  expression and calls SMALLS() .

  While in the SMALLS(), first letter searches can be
  done if the dbf is indexed  with a character index. Pressing
  ENTER will KEYBOARD the expression in SRETURN (unless its
  empty), close up the current area and return to the old area.
  Pressing escape just closes things up and returns to the old
  area.

  The KEYBOARD then takes over, feeding the SRETURN
  expression into the keyboard and into the current GET or GETS.

  Examples:
  ---------
   EXTERNAL SCROLLER

   SET KEY -1 TO SCROLLER  && F2

  Notes:
  -------
  BIG NOTE:

  This is really for managing dynamic lookup tables
  that will change frequently as to lookup params. Because of this, it
  is quite complex in nature.

  If you know what the lookup is going to be, and it
  will not change between compiles, look at SMALLS(), SMALLKSET(),
  SMALLVALID() and SMALLWHEN() and use one of these as
  appropriate, instead of SCROLLER().

  Source:
  -------
  S_SCROLL.PRG