home *** CD-ROM | disk | FTP | other *** search
- <<* Promain.inc *>>
-
- <<procedure GenMainBody>>
- <<string mflash>>
- <<begin>>
-
- CLOSE ALL
- CLEAR ALL
- CLEAR
-
- *--- Save existing FoxPro environment
-
- SET CONSOLE OFF
- menv_talk = SET('TALK')
- menv_stat = SET('STAT')
- menv_help = SET('HELP')
- menv_bell = SET('BELL')
- menv_full = SET('FULL')
- menv_safe = SET('SAFE')
- menv_esca = SET('ESCA')
- menv_dele = SET('DELE')
- menv_cloc = SET('CLOC')
- menv_echo = SET('ECHO')
- menv_debu = SET('DEBUG')
- SET CONSOLE ON
-
- *--- Establish Program Environment
-
- SET TALK OFF
- SET STATUS OFF
- SET HELP ON
- SET BELL ON
- SET FULLPATH OFF
- SET SAFETY OFF
- SET ESCAPE ON
- SET DELETE OFF
- SET CLOCK TO 0,69
- SET CLOCK ON
- SET ECHO OFF
- SET DEBUG OFF
- SET COLOR OF SCHEME 2 TO SCHEME 4
- SET REPROCESS TO AUTOMATIC
- SET REFRESH TO 10
-
- * --- Declare Global memory variables.
-
- PUBLIC;
- dbfarea,choice,expr,bye,mdelete,dbname(10),mcount,hasindex(10),tindex
-
- <<select all>>
-
- * ---Initialize Global memory variables.
-
- dbfarea = 1
- expr = ''
- expr2 = ''
- hasindex = .F.
- msg_eof = 'This is the last record.'
- msg_bof = 'This is the first record.'
- msg_loc1 = 'No matching records found.'
- msg_loc2 = 'No more matching records found.'
- msg_pack = 'NOT UNDOABLE! - Remove all deleted records?'
- msg_stop = 'Do you want to stop running this program?'
- msg_fatal = 'Cannot continue running program.'
- msg_reind = 'Rebuild Index files for current database?'
- msg_range = 'Record out of range.'
- msg_nofile = 'File does not exist.'
- msg_nofind = 'Record not found.'
- msg_illkey = 'Illegal Key Expression Type.'
- msg_cr_idx = ' not found, create index?'
- msg_addrec = ' empty. Add a record?'
- msg_exclu = 'File must be opened exclusively to reindex.'
- <<if ndxtotal > 0>>
- ndxorder = '1'
- <<else>>
- ndxorder = ''
- <<endif>>
- <<if ismultials>>
- multidbf = .T.
- oldarea = dbfarea
- continueon = .F.
- <<else>>
- multidbf = .F.
- <<endif>>
- STORE .F. TO bye,noopen,medit,mexit,continueon
-
- * --- Activate ON ERROR and ON ESCAPE routines
-
- mdelete = ' \<Delete '
- DEFINE WINDOW alert FROM 15,15 TO 21,65 DOUBLE SHADOW COLOR SCHEME 7
- ON ERROR DO doerror WITH ERROR(), MESSAGE()
- ON ESCAPE DO doescape
-
- * ---Set the color environment and define all windows
-
- <<defmemo>>
- DEFINE WINDOW mbrowse FROM 4,15 to 20,65 PANEL SHADOW CLOSE FLOAT GROW ZOOM COLOR SCHEME 10
- << mflash := substr(screencolor,at('/',screencolor)+1,at(',',screencolor)-at('/',screencolor)-1) >>
- << mflash := mflash+'*/'+substr(screencolor,1,at('/',screencolor)-1) >>
- << mflash := stuff(mflash,at('+',mflash),1,'') >>
- mflash = {'}{mflash}{'}
- schm1 = 'GB/W,N/W,N/W,W+/W,W+/W,N/GB,W+/W,W+/W,W+/GB,W+/W'
- schm2 = 'GB/W,W+/BR+,W/BR+,,,W+/B,GR+/BR+'
- schm3 = ',W+/R,,,,W/N,GR+/R'
- tbar = 'GB+/W'
- DEFINE WINDOW menter2 FROM 7,10 to 19,70 DOUBLE SHADOW COLOR SCHEME 5
- DEFINE WINDOW menter FROM 8,20 to 18,60 DOUBLE SHADOW NOCLOSE NOFLOAT NOGROW NOZOOM COLOR SCHEME 7
- dbname = '\'
-
- * --- Routine to open database and index files
- * --- If unable to open files, program exits
-
- DO {fileprefix}_open
- IF noopen
- DO alert WITH msg_fatal
- DO closedown
- RETURN
- ENDIF
-
- * --- Open the on-line Help file
-
- SET HELP TO {fileprefix}_help
-
- * ---Define menu bar and popup menus
-
- DEFINE MENU mbartop1
- DEFINE PAD mbar0 OF mbartop1 AT 0,0 PROMPT '\<File'
- DEFINE PAD mbar1 OF mbartop1 AT 0,6 PROMPT '\<Position'
- DEFINE PAD mbar2 OF mbartop1 AT 0,16 PROMPT '\<Record'
- DEFINE PAD mbar3 OF mbartop1 AT 0,24 PROMPT '\<Utilities'
- DEFINE PAD mbar4 OF mbartop1 AT 0,35 PROMPT '\<Next'
- DEFINE PAD mbar5 OF mbartop1 AT 0,41 PROMPT 'Pr\<ior'
- DEFINE POPUP mbar0 FROM 1,0 SHADOW
- DEFINE BAR 1 OF mbar0 PROMPT ' \<Help... '
- DEFINE BAR 2 OF mbar0 PROMPT ' \<Database...' SKIP FOR .NOT. multidbf
- DEFINE BAR 3 OF mbar0 PROMPT '\-'
- DEFINE BAR 4 OF mbar0 PROMPT ' \<Quit '
- DEFINE POPUP mbar1 FROM 1,6 SHADOW
- DEFINE BAR 1 OF mbar1 PROMPT ' \<Seek ' SKIP FOR .NOT. tindex
- DEFINE BAR 2 OF mbar1 PROMPT ' \<Goto... '
- DEFINE BAR 3 OF mbar1 PROMPT ' \<Locate '
- DEFINE BAR 4 OF mbar1 PROMPT ' \<Continue ' SKIP FOR .NOT. continueon
- DEFINE POPUP mbar2 FROM 1,16 SHADOW
- DEFINE BAR 1 OF mbar2 PROMPT ' \<Edit '
- DEFINE BAR 2 OF mbar2 PROMPT ' \<Add '
- DEFINE BAR 3 OF mbar2 PROMPT ' \<Browse '
- DEFINE BAR 4 OF mbar2 PROMPT '\-'
- DEFINE BAR 5 OF mbar2 PROMPT mdelete
- DEFINE POPUP mbar3 FROM 1,24 SHADOW
- DEFINE BAR 1 OF mbar3 PROMPT ' \<Report... '
- DEFINE BAR 2 OF mbar3 PROMPT ' \<Label... '
- DEFINE BAR 3 OF mbar3 PROMPT ' \<Pack '
- DEFINE BAR 4 OF mbar3 PROMPT ' Re\<index ' SKIP FOR .NOT. tindex
- ON SELECTION PAD mbar0 OF mbartop1 ACTIVATE POPUP mbar0
- ON SELECTION PAD mbar1 OF mbartop1 ACTIVATE POPUP mbar1
- ON SELECTION PAD mbar2 OF mbartop1 ACTIVATE POPUP mbar2
- ON SELECTION PAD mbar3 OF mbartop1 ACTIVATE POPUP mbar3
- ON SELECTION PAD mbar4 OF mbartop1 DO {fileprefix}_mnct WITH 4,6
- ON SELECTION PAD mbar5 OF mbartop1 DO {fileprefix}_mnct WITH 5,7
- ON SELECTION POPUP mbar0 DO {fileprefix}_mnct WITH 0,BAR()
- ON SELECTION POPUP mbar1 DO {fileprefix}_mnct WITH 1,BAR()
- ON SELECTION POPUP mbar2 DO {fileprefix}_mnct WITH 2,BAR()
- ON SELECTION POPUP mbar3 DO {fileprefix}_mnct WITH 3,BAR()
- CLEAR
-
- * --- Initialize memory variables
-
- <<initmemory>>
- optpad = 'mbar0'
-
- * --- Main loop that places @...SAY/GETs on the screen and activates menus
- * --- Loop is exited when Quit is chosen from the File menu
-
- DO WHILE .NOT. mexit
- ACTIVATE SCREEN
- tindex = hasindex(dbfarea)
- <<displayformat>>
- <<displayrecord>>
- @ 24,1 SAY 'Database: '+dbname(dbfarea)+' '
-
- * --- If record is marked for deletion, place proper option in Record menu
-
- IF DELETED()
- @ 0,0 SAY ' File Position Record Utilities Next Prior ** Deleted ** '
- mdelete = ' \<Recall '
- ELSE
- @ 0,0 SAY ' File Position Record Utilities Next Prior '
- mdelete = ' \<Delete '
- ENDIF
- DEFINE BAR 5 OF mbar2 PROMPT mdelete
-
- * --- If edit or append is chosen from Record menu, READ is activated
-
- IF medit
- READ
- medit = .F.
- ELSE
- CLEAR GETS
- ENDIF
- ACTIVATE MENU mbartop1 PAD &optpad
- ENDDO
-
- * --- End of main loop
-
- * --- Restore the original environment
-
- DO closedown
-
- RETURN
-
- * --- End Main
-
- * --- The following procedure is called when a menu popup is selected
-
- PROCEDURE {fileprefix}_mnct
- PARAMETER row,col
- optpad = PAD()
- mpop = 'mbar'+ LTRIM(STR(row))
-
- *---Hide the menu popup
-
- IF row <> 4 .and. row <> 5
- HIDE MENU mbartop1
- HIDE POPUP &mpop
- ENDIF
- DO CASE
-
- *--- Exit the main loop and exit this program
- CASE row = 0 .AND. col = 4
- mexit = .T.
-
- *---Select a database a file if more than one has been opened
- CASE row = 0 .AND. col = 2
- ACTIVATE WINDOW menter
- mchoice = dbfarea
- @ 1,5 SAY 'Select: '
- @ 0,15 MENU dbname,mcount,6
-
- * --- Activate the menu containing available databases
-
- READ MENU TO mchoice
- DEACTIVATE WINDOW menter
- IF mchoice <> dbfarea .AND. mchoice <> 0
- tarea = LTRIM(STR(mchoice))
- dbfarea = mchoice
- continueon = .F.
- expr = ''
- SELECT &tarea
- ENDIF
-
- *--- Activate the online Help system
- CASE row = 0 .AND. col = 1
- HELP
- DEACTIVATE WINDOW ALL
-
- *--- If database does not have any records, exit this program
- CASE .NOT. (row=2 .AND. col=1) .AND. (RECCOUNT() = 0)
- DO alert WITH msg_fatal
- mexit = .T.
-
- *--- Edit the current record
- CASE row=2 .AND. col= 1
- medit = .T.
-
- *--- Append a blank record and initialize the fields
- CASE row=2 .AND. col=2
- APPEND BLANK
-
- *--- Note: This will be an empty CASE structure if there are no initial values specified
- DO CASE
- << forall databases >>
- CASE dbname(dbfarea) $ DBF({'}{fldals}{'})
- << forall fldgets >>
- << if len(rtrim(fldini)) <> 0 >>
- REPLACE {fldnam} WITH {fldini}
- << endif >>
- << endfor >>
- << endfor >>
- ENDCASE
- medit = .T.
-
- *--- Process selection from the Go menu
- CASE row=1 .or. row=4 .or. row=5
- DO {fileprefix}_edit WITH col
-
- *--- Open a browse window
- CASE row=2 .AND. col=3
- IF FILE({'}{fmtname}')
- SET FORMAT TO {fmtname}
- BROWSE WINDOW mbrowse FORMAT
- SET FORMAT TO
- ELSE
- BROWSE WINDOW mbrowse LAST
- ENDIF
- DEACTIVATE WINDOW ALL
-
- *--- Mark a record for deletion or unmark a record marked for deletion
- CASE row=2 .AND. col=5
- IF DELETED()
- RECALL NEXT 1
- ELSE
- DELETE NEXT 1
- ENDIF
-
- *--- Call a routine for processing reports
- CASE row=3 .AND. col=1
- DO {fileprefix}_repo
-
- *--- Call a routine for processing labels
- CASE row=3 .AND. col=2
- DO {fileprefix}_labe
-
- *--- Remove records marked for deletion from the database
- CASE row=3 .AND. col=3
- choice = 1
- DO alert2 WITH choice,msg_pack
- IF choice = 1
- PACK
- ENDIF
-
- *--- Update indexes
- CASE row=3 .AND. col=4
- choice = 1
- IF SET("EXCLUSIVE") = "OFF"
- DO alert WITH msg_exclu
- ELSE
- DO alert2 WITH choice,msg_reind
- IF choice = 1
- REINDEX
- ENDIF
- ENDIF
- ENDCASE
- DEACTIVATE MENU
- RETURN
-
- <<end>> <<*GenMainBody*>>
-
- * --- End of procedure