home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a070 / 3.ddi / FOXPRO / TEMPLGEN / AP1BROW.INC < prev    next >
Encoding:
Text File  |  1988-05-05  |  9.1 KB  |  371 lines

  1. <<* APPBROW.INC *>>
  2.  
  3. <<procedure GenBrowseSimple>>
  4. <<begin>>
  5. <<GenColor( 0,'SCREEN' )>>
  6. CLEAR
  7. <<GenColor( 0,'STATUS' )>>
  8. @ 0,0
  9. @ 0,0 SAY "Record#  "
  10. *
  11. <<GenColor( 0,'PROMPT' )>>
  12. @ 22,0 SAY PromptBar
  13. @ 23,0 SAY "No fields to browse."
  14. WAIT
  15. <<end>> <<*GenBrowseSimple*>>
  16.  
  17.  
  18. <<procedure GenBrowsePrompt>>
  19. <<begin>>
  20.  
  21. <<if LiteBar>>
  22. <<*       1         2         3         4         5         6
  23. 0123456789012345678901234567890123456789012345678901234567890123456789
  24. BROWSE:  (E)dit  (F)ind  (G)oto  fi(L)ter  <Arrows>  <Del>  <Return>
  25. *>>
  26.    @ rowPROMPT,0 SAY ;
  27.      "BROWSE:  (E)dit  (F)ind  (G)oto  fi(L)ter  <Arrows>  <Del>  <Return> "
  28.    <<GenColor( 1,'HILITE' )>>
  29.    @ rowPROMPT, 9 SAY "(E)"
  30.    @ rowPROMPT,17 SAY "(F)"
  31.    @ rowPROMPT,25 SAY "(G)"
  32.    @ rowPROMPT,35 SAY "(L)"
  33.    @ rowPROMPT,44 SAY "Arrows"
  34.    @ rowPROMPT,54 SAY "Del"
  35.    @ rowPROMPT,61 SAY "Return"
  36.    <<GenColor( 1,'PROMPT' )>>
  37. <<else>> 
  38.    @ rowPROMPT,0 SAY ;
  39.    "BROWSE:  (E)dit  (F)ind  (G)oto  fi(L)ter  <Arrows>  <Del>  <Return> "
  40. <<endif>>
  41. <<end>> <<*GenBrowsePrompt*>>
  42.  
  43.  
  44. <<#
  45. procedure GenDoOneDisp
  46. string alpha
  47. begin
  48.   if ismultials
  49.     genln( 'DO CASE' )
  50.     forall databases
  51.       alpha := chr( dbfcount + 64 )
  52.       genln( 'CASE dbfarea = "',dbfcount,'"' )
  53.       pushmargin( 1 )
  54.       if fldtotal > 0
  55.         genln( 'DO ',fileprefix,'_',alpha,'DIS WITH row,1' )
  56.       endif
  57.       popmargin
  58.     endfor
  59.     genln( 'ENDCASE' )
  60.   else
  61.     genln( 'DO ',fileprefix,'_DISP WITH row,1' )
  62.   endif
  63. end GenDoOneDisp
  64.  
  65.  
  66. procedure GenDoDisplay
  67. string alpha
  68. begin
  69.   if ismultials
  70.     genln( 'DO CASE' )
  71.     forall databases
  72.       alpha := chr( dbfcount + 64 )
  73.       genln( 'CASE dbfarea = "',dbfcount,'"' )
  74.       pushmargin( 1 )
  75.       if fldtotal > 0
  76.         genln( 'DO ',fileprefix,'_',alpha,'DIS WITH (rowTOP),skipRECS' )
  77.       else
  78.         GenColor( 0,'SCREEN' )
  79.         genln( 'CLEAR' )
  80.         GenColor( 0,'STATUS' )
  81.         genln( '@ 0,0' )
  82.         genln( '@ 0,0 SAY "No fields available..."' )
  83.       endif
  84.       popmargin
  85.     endfor
  86.     genln( 'ENDCASE' )
  87.   else
  88.     genln( 'DO ',fileprefix,'_DISP WITH (rowTOP),skipRECS' )
  89.   endif
  90. end GenDoDisplay
  91. #>>
  92.  
  93.  
  94. <<procedure GenBrowseBody>>
  95. <<begin>>
  96. PRIVATE pancol,panMAX,panLAST,recnumTOP,recnumLAST,skipRECS
  97. PRIVATE HOME,ENDkey,UParrow,DOWNarrow,LEFTarrow,RIGHTarrow
  98. PRIVATE row,rowTOP,rowBOTTOM,rowPROMPT,KEYSTROKES,PagePaint
  99. PRIVATE isedited
  100. * ---Initialize constants.
  101. HOME = CHR(1)
  102. ENDkey = CHR(6)
  103. UParrow = CHR(5)
  104. DOWNarrow = CHR(24)
  105. LEFTarrow = CHR(19)
  106. RIGHTarrow = CHR(4)
  107. KEYSTROKES = "EFGL"+UParrow+DOWNarrow+HOME+LEFTarrow+;
  108.              RIGHTarrow+ENDkey+PgDn+PgUp+DelRecord+Returnkey
  109. <<if ismultials>>
  110. rowTOP = 2
  111. <<else>>
  112. rowTOP = 1
  113. <<endif>>
  114. rowBOTTOM = 20
  115. rowPROMPT = rowBOTTOM + 3
  116. skipRECS = rowBOTTOM - rowTOP + 1
  117. GOTO TOP
  118. * ---Initialize local variables.
  119. row = rowTOP
  120. recnum = RECNO()
  121. recnumTOP = recnum
  122. PagePaint = .T.
  123. isedited = .F.
  124. pancol = 1
  125. panLAST = 1
  126. <<if ismultials>>
  127. DO CASE
  128.   <<forall databases>>
  129. CASE dbfarea = {"}{dbfcount}{"}
  130.     <<InitBrowse>>
  131.    panMAX = {panmax}
  132.   <<endfor>>
  133. ENDCASE
  134. <<else>>
  135. panMAX = {panmax}
  136. <<endif>>
  137. * ---Perform BROWSE.
  138. <<GenColor( 0,'SCREEN' )>>
  139. CLEAR
  140. * ---The following loop is really a "REPEAT/UNTIL <cond>".
  141. DO WHILE .T.
  142.    IF PagePaint
  143.       recnum = RECNO()
  144.       GOTO recnumTOP
  145.     <<if ismultials>>
  146.       <<GenColor( 2,'HILITE' )>>
  147.       <<select database 1>>
  148.       <<filespec( dbfnam,fpath,fname,fext )>>
  149.       <<fname := fpath[1]>>
  150.       @ 0,0 SAY {"}{fname}:{"} + DBFname
  151.     <<endif>>
  152.     <<pushmargin( 2 )>>
  153.     <<GenDoDisplay>>
  154.     <<popmargin>>
  155.       GOTO recnum
  156.       IF pancol = panLAST
  157.          * ---Reposition record pointer when repainting current page.
  158.          row = rowTOP
  159.       ENDIF
  160.       panLAST = pancol
  161.       PagePaint = .F.
  162.    ENDIF
  163.    <<GenColor( 1,'PROMPT' )>>
  164.    @ rowPROMPT-1,0 SAY PromptBar
  165.    <<GenBrowsePrompt>>
  166.    @ row,0 SAY CHR(16)
  167.    DO GetKey WITH choice,KEYSTROKES
  168.    * ---Reposition record pointer.
  169.    DO WHILE choice $ UParrow+DOWNarrow
  170.       @ row,0 SAY " "
  171.       IF choice = UParrow
  172.          SKIP -1
  173.          DO CASE
  174.          CASE BOF()
  175.             GOTO TOP
  176.          CASE row > rowTOP
  177.             row = row - 1
  178.          OTHERWISE
  179. <<if feat(featbrowse)>>
  180.             recnumTOP = RECNO()
  181.             * ---Scroll window down.
  182.             CALL Scroll WITH rowTOP,0,rowBOTTOM,79,1,"D"
  183.             <<pushmargin( 4 )>>
  184.             <<GenDoOneDisp>>
  185.             <<popmargin>>
  186. <<else>>
  187.             SKIP
  188. <<endif>>
  189.          ENDCASE
  190.       ELSE
  191.          SKIP
  192.          DO CASE
  193.          CASE EOF()
  194.             GOTO BOTTOM
  195.          CASE row < rowBOTTOM
  196.             row = row + 1
  197.          OTHERWISE
  198. <<if feat(featbrowse)>>
  199.             * ---Adjust top-of-page record pointer.
  200.             recnum = RECNO()
  201.             GOTO recnumTOP
  202.             SKIP
  203.             recnumTOP = RECNO()
  204.             GOTO recnum
  205.             * ---Scroll window up.
  206.             CALL Scroll WITH rowTOP,0,rowBOTTOM,79,1,"U"
  207.             <<pushmargin( 4 )>>
  208.             <<GenDoOneDisp>>
  209.             <<popmargin>>
  210. <<else>>
  211.             SKIP -1
  212. <<endif>>
  213.          ENDCASE
  214.       ENDIF
  215.       @ row,0 SAY CHR(16)
  216.       DO GetKey WITH choice,KEYSTROKES
  217.    ENDDO
  218.    * ---Prompt line selections.
  219.    DO CASE
  220.    CASE choice = Returnkey
  221.       EXIT
  222.    CASE choice = "E"
  223.       recnumLAST = RECNO()
  224.       SAVE SCREEN
  225.       DO {fileprefix}_EDIT WITH isedited
  226.       IF recnumLAST = RECNO() .AND. .NOT. isedited
  227.          RESTORE SCREEN
  228.       ELSE
  229.          * ---Redisplay the screen.
  230.          <<GenColor( 3,'SCREEN' )>>
  231.          CLEAR
  232.          GOTO recnumLAST
  233.          * ---Do not reposition record pointer.
  234.          panLAST = 0
  235.          PagePaint = .T.
  236.       ENDIF
  237.    CASE choice = "F"
  238.       * ---Find a record.
  239.    <<select all databases>>
  240.    <<if ndxtotal = 0>>
  241.       DO SayLine WITH rowPROMPT,"*** NO INDEX FILE IN USE"
  242.       WAIT
  243.       @ rowPROMPT,0 CLEAR
  244.    <<elsif ismultindx>>
  245.       DO {fileprefix}_NDXS WITH rowPROMPT,choice
  246.       IF choice > "0"
  247.          recnumLAST = RECNO()
  248.          DO {fileprefix}_SEEK WITH rowPROMPT
  249.          IF EOF()
  250.             DO SayLine WITH rowPROMPT,"No find."
  251.             WAIT
  252.             @ rowPROMPT,0 CLEAR
  253.             GOTO recnumLAST
  254.          ELSE
  255.             recnumTOP = RECNO()
  256.             PagePaint = .T.
  257.          ENDIF
  258.       ENDIF
  259.    <<else>>
  260.       recnumLAST = RECNO()
  261.       DO {fileprefix}_SEEK WITH rowPROMPT
  262.       IF EOF()
  263.          DO SayLine WITH rowPROMPT,"No find."
  264.          WAIT
  265.          GOTO recnumLAST
  266.       ELSE
  267.          recnumTOP = RECNO()
  268.          PagePaint = .T.
  269.       ENDIF
  270.    <<endif>>
  271.       @ rowPROMPT,0 CLEAR
  272.    CASE choice = "G"
  273.       DO DoGOTO WITH rowPROMPT,recnum,LastRec
  274.       IF recnum > 0
  275.          recnumTOP = RECNO()
  276.          PagePaint = .T.
  277.       ENDIF
  278.    CASE choice = DelRecord
  279.       * ---Delete the record.
  280.       IF DELETED()
  281.          RECALL
  282.       ELSE
  283.          DELETE
  284.       ENDIF
  285.   <<if ismultials>>
  286.       panLAST = 0
  287.       PagePaint = .T.   <<*Display the whole thing*>>
  288.   <<else>>
  289.       DO {fileprefix}_DISP WITH row,1
  290.   <<endif>>
  291.    CASE choice = PgDn
  292.       IF .NOT. EOF()
  293.          GOTO recnumTOP
  294.          SKIP skipRECS
  295.          IF EOF()
  296.             GOTO BOTTOM
  297.          ENDIF
  298.          recnumTOP = RECNO()
  299.          PagePaint = .T.
  300.       ENDIF
  301.    CASE choice = PgUp
  302.       IF .NOT. BOF()
  303.          GOTO recnumTOP
  304.          SKIP -skipRECS
  305.          IF BOF()
  306.             GOTO TOP
  307.          ENDIF
  308.          recnumTOP = RECNO()
  309.          PagePaint = .T.
  310.       ENDIF
  311.    CASE choice = "L"
  312.       * ---Set FILTER.
  313.       <<GenColor( 2,'WINDOW' )>>
  314.       @ 1,0 CLEAR
  315.      <<select database 8>>  <<*Is SELECT H being used?*>>
  316.      <<if dbfnam>>          <<*Yes, then use old <expr> system...*>>
  317.       DO {fileprefix}_EXPR WITH expr
  318.      <<else>>               <<*No, use new and improved...*>>
  319.       DO {fileprefix}_COND WITH expr
  320.      <<endif>>
  321.       IF "" = TRIM( expr )
  322.          SET FILTER TO
  323.       ELSE
  324.          * ---Check for valid LOGICAL expression.
  325.          IF TYPE( expr ) = "L"
  326.             SET FILTER TO &expr
  327.          ELSE
  328.            <<GenColor( 4,'PROMPT' )>>
  329.             @ rowPROMPT,0 CLEAR
  330.             @ rowPROMPT,0 SAY "Invalid expression."
  331.             WAIT
  332.          ENDIF
  333.       ENDIF
  334.       GOTO TOP
  335.       IF EOF()
  336.          <<GenColor( 3,'PROMPT' )>>
  337.          @ rowPROMPT,0 CLEAR
  338.          @ rowPROMPT,0 SAY "No matching records."
  339.          WAIT
  340.          @ rowPROMPT,0 CLEAR
  341.          SET FILTER TO
  342.          GOTO TOP
  343.       ENDIF
  344.       recnumTOP = RECNO()
  345.       PagePaint = .T.
  346.       <<GenColor( 2,'SCREEN' )>>
  347.       CLEAR
  348.    CASE choice = HOME
  349.       PagePaint = (pancol <> 1)
  350.       pancol = 1
  351.    CASE choice = LEFTarrow
  352.       IF pancol > 1
  353.          pancol = pancol - 1
  354.          PagePaint = .T.
  355.       ENDIF
  356.    CASE choice = RIGHTarrow
  357.       IF pancol < panMAX
  358.          pancol = pancol + 1
  359.          PagePaint = .T.
  360.       ENDIF
  361.    CASE choice = ENDkey
  362.       PagePaint = (pancol <> panMAX)
  363.       pancol = panMAX
  364.    ENDCASE
  365. ENDDO
  366. SET FILTER TO
  367. GOTO TOP
  368. <<end>> <<*GenBrowseBody*>>
  369.  
  370. <<* EOF: APPBROW.INC *>>
  371.