home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a040 / 2.ddi / SHRWARE4.ARC / MSABROW.INC < prev    next >
Encoding:
Text File  |  1988-06-03  |  12.3 KB  |  503 lines

  1. <<* MSABROW.INC *>>
  2. <<* Modified by R. Borter, Jr 5 May 1988 *>>
  3.  
  4.  
  5. <<procedure GenBrowseSimple>>
  6. <<begin>>
  7. <<GenColor( 0,'SCREEN' )>>
  8. CLEAR
  9. <<GenColor( 0,'STATUS' )>>
  10. @ 0,0
  11. @ 0,0 SAY "Record#  "
  12. *
  13. <<GenColor( 0,'PROMPT' )>>
  14. DO PromptBar
  15. @ 23,0 SAY "No fields to browse."
  16. WAIT
  17. <<end>> <<*GenBrowseSimple*>>
  18.  
  19.  
  20. <<procedure GenBrowsePrompt>>
  21. <<begin>>
  22. <<*       1         2         3         4         5         6
  23. 0123456789012345678901234567890123456789012345678901234567890123456789
  24. BROWSE:  Edit   Find   Goto   fiLter  <Arrows>  <Del>  <Return>
  25. *>>
  26.    @ rowPROMPT,0 CLEAR
  27.    @ rowPROMPT+1,0 SAY "BROWSE:  Edit   Find   Goto    fiLter    "+ ;
  28.  CHR(27)+CHR(24)+CHR(25)+CHR(26)+"    <Del>  <Return> "
  29.    <<GenColor( 1,'HILITE' )>>
  30.    @ rowPROMPT+1, 9 SAY "E"
  31.    @ rowPROMPT+1,16 SAY "F"
  32.    @ rowPROMPT+1,23 SAY "G"
  33.    @ rowPROMPT+1,33 SAY "L"
  34.    @ rowPROMPT+1,50 SAY "Del"
  35.    @ rowPROMPT+1,57 SAY "Return"
  36.    <<GenColor( 1,'PROMPT' )>>
  37.  
  38. <<end>> <<*GenBrowsePrompt*>>
  39.  
  40.  
  41. <<#
  42. procedure GenDoOneDisp
  43. string alpha
  44. begin
  45.   if ismultials
  46.     genln( 'DO CASE' )
  47.     forall databases
  48.       alpha := chr( dbfcount + 64 )
  49.       genln( 'CASE dbfarea = "',dbfcount,'"' )
  50.       pushmargin( 1 )
  51.       if fldtotal > 0
  52.         genln( 'DO ',fileprefix,'_',alpha,'DIS WITH row,1' )
  53.       endif
  54.       popmargin
  55.     endfor
  56.     genln( 'ENDCASE' )
  57.   else
  58.     genln( 'DO ',fileprefix,'_DISP WITH row,1' )
  59.   endif
  60. end GenDoOneDisp
  61.  
  62.  
  63. procedure GenDoDisplay
  64. string alpha
  65. begin
  66.   if ismultials
  67.     genln( 'DO CASE' )
  68.     forall databases
  69.       alpha := chr( dbfcount + 64 )
  70.       genln( 'CASE dbfarea = "',dbfcount,'"' )
  71.       pushmargin( 1 )
  72.       if fldtotal > 0
  73.         genln( 'DO ',fileprefix,'_',alpha,'DIS WITH (rowTOP),skipRECS' )
  74.       else
  75.         GenColor( 0,'SCREEN' )
  76.         genln( 'CLEAR' )
  77.         GenColor( 0,'STATUS' )
  78.         genln( '@ 0,0' )
  79.         genln( '@ 0,0 SAY "No fields available..."' )
  80.       endif
  81.       popmargin
  82.     endfor
  83.     genln( 'ENDCASE' )
  84.   else
  85.     genln( 'DO ',fileprefix,'_DISP WITH (rowTOP),skipRECS' )
  86.   endif
  87. end GenDoDisplay
  88. #>>
  89.  
  90.  
  91. <<procedure GenBrowseBody>>
  92. <<begin>>
  93. PRIVATE pancol,panMAX,panLAST,recnumTOP,recnumLAST,skipRECS
  94. PRIVATE HOME,ENDkey,UParrow,DOWNarrow,LEFTarrow,RIGHTarrow
  95. PRIVATE row,rowTOP,rowBOTTOM,rowPROMPT,KEYSTROKES,PagePaint
  96. PRIVATE isedited
  97. * ---Initialize constants.
  98. HOME = CHR(1)
  99. ENDkey = CHR(6)
  100. UParrow = CHR(5)
  101. DOWNarrow = CHR(24)
  102. LEFTarrow = CHR(19)
  103. RIGHTarrow = CHR(4)
  104. KEYSTROKES = "EFGL"+UParrow+DOWNarrow+HOME+LEFTarrow+;
  105.              RIGHTarrow+ENDkey+PgDn+PgUp+DelRecord+Returnkey
  106. <<if ismultials>>
  107. rowTOP = 2
  108. <<else>>
  109. rowTOP = 1
  110. <<endif>>
  111. rowBOTTOM = 20
  112. rowPROMPT = rowBOTTOM + 3
  113. skipRECS = rowBOTTOM - rowTOP + 1
  114. * ---Initialize local variables.
  115. row = rowTOP
  116. recnum = RECNO()
  117. recnumTOP = recnum
  118. PagePaint = .T.
  119. isedited = .F.
  120. pancol = 1
  121. panLAST = 1
  122. <<if ismultials>>
  123. DO CASE
  124.   <<forall databases>>
  125. CASE dbfarea = {"}{dbfcount}{"}
  126.     <<InitBrowse>>
  127.    panMAX = {panmax}
  128.   <<endfor>>
  129. ENDCASE
  130. <<else>>
  131. panMAX = {panmax}
  132. <<endif>>
  133. * ---Perform BROWSE.
  134. <<GenColor( 0,'SCREEN' )>>
  135. CLEAR
  136. * ---The following loop is really a "REPEAT/UNTIL <cond>".
  137. DO WHILE .T.
  138. *---SET CURSOR OFF
  139.    ?? SYS(2002)
  140.    IF PagePaint
  141.       recnum = RECNO()
  142.       GOTO recnumTOP
  143.     <<if ismultials>>
  144.       <<GenColor( 2,'HILITE' )>>
  145.       <<select database 1>>
  146.       <<filespec( dbfnam,fpath,fname,fext )>>
  147.       <<fname := fpath[1]>>
  148.       @ 0,0 SAY {"}{fname}:{"} + DBFname
  149.     <<endif>>
  150.     <<pushmargin( 2 )>>
  151.     <<GenDoDisplay>>
  152.     <<popmargin>>
  153.       GOTO recnum
  154.       IF pancol = panLAST
  155.          * ---Reposition record pointer when repainting current page.
  156.          row = rowTOP
  157.       ENDIF
  158.       panLAST = pancol
  159.       PagePaint = .F.
  160.    ENDIF
  161.    <<GenColor( 1,'PROMPT' )>>
  162.    DO PromptBar
  163.    <<GenBrowsePrompt>>
  164.    @ row,0 SAY CHR(16)
  165.    DO GetKey WITH choice,KEYSTROKES
  166.    * ---Reposition record pointer.
  167.    DO WHILE choice $ UParrow+DOWNarrow
  168.       @ row,0 SAY " "
  169.       IF choice = UParrow
  170.          SKIP -1
  171.          DO CASE
  172.          CASE BOF()
  173.             GOTO TOP
  174.          CASE row > rowTOP
  175.             row = row - 1
  176.          OTHERWISE
  177.         <<if Fox>>
  178.             recnumTOP = RECNO()
  179.             * ---Scroll window down.
  180.             Scroll rowTOP,0,rowBOTTOM,79,-1
  181.             <<pushmargin( 4 )>>
  182.             <<GenDoOneDisp>>
  183.             <<popmargin>>
  184.          <<endif>>
  185.          ENDCASE
  186.       ELSE
  187.          SKIP
  188.          DO CASE
  189.          CASE EOF()
  190.             GOTO BOTTOM
  191.          CASE row < rowBOTTOM
  192.             row = row + 1
  193.          OTHERWISE
  194.         <<if FOX>>
  195.             * ---Adjust top-of-page record pointer.
  196.             recnum = RECNO()
  197.             GOTO recnumTOP
  198.             SKIP
  199.             recnumTOP = RECNO()
  200.             GOTO recnum
  201.             * ---Scroll window up.
  202.             Scroll rowTOP,0,rowBOTTOM,79,1
  203.             <<pushmargin( 4 )>>
  204.             <<GenDoOneDisp>>
  205.             <<popmargin>>
  206.         <<endif>>
  207.          ENDCASE
  208.       ENDIF
  209.       @ row,0 SAY CHR(16)
  210.       DO GetKey WITH choice,KEYSTROKES
  211.    ENDDO
  212.    * ---Prompt line selections.
  213.    DO CASE
  214.    CASE choice = Returnkey
  215.       EXIT
  216.    CASE choice = "E"
  217.       recnumLAST = RECNO()
  218.       SAVE SCREEN
  219.       DO {fileprefix}_EDIT WITH isedited
  220.       IF recnumLAST = RECNO() .AND. .NOT. isedited
  221.          RESTORE SCREEN
  222.       ELSE
  223.          * ---Redisplay the screen.
  224.          <<GenColor( 3,'SCREEN' )>>
  225.          CLEAR
  226.          GOTO recnumLAST
  227.          * ---Do not reposition record pointer.
  228.          panLAST = 0
  229.          PagePaint = .T.
  230.       ENDIF
  231.    CASE choice = "F"
  232.       ?? SYS(2002,1)
  233.       * ---Find a record.
  234.    <<select all databases>>
  235.    <<if ndxtotal = 0>>
  236.       DO SayLine WITH rowPROMPT,"*** NO INDEX FILE IN USE"
  237.       WAIT
  238.    <<elsif ismultindx>>
  239.       DO {fileprefix}_NDXS WITH rowPROMPT,choice
  240.       IF choice > "0"
  241.          recnumLAST = RECNO()
  242.          DO {fileprefix}_SEEK WITH rowPROMPT
  243.          IF EOF()
  244.             DO SayLine WITH rowPROMPT,"No find."
  245.             WAIT
  246.             GOTO recnumLAST
  247.          ELSE
  248.             recnumTOP = RECNO()
  249.             PagePaint = .T.
  250.          ENDIF
  251.       ENDIF
  252.    <<else>>
  253.       recnumLAST = RECNO()
  254.       DO {fileprefix}_SEEK WITH rowPROMPT
  255.       IF EOF()
  256.          DO SayLine WITH rowPROMPT,"No find."
  257.          WAIT
  258.          GOTO recnumLAST
  259.       ELSE
  260.          recnumTOP = RECNO()
  261.          PagePaint = .T.
  262.       ENDIF
  263.    <<endif>>
  264.  
  265. <<* MODIFICATIONS *>>
  266.  
  267.    CASE choice = "G"
  268.       DO DoGOTO WITH rowPROMPT,recnum,LastRec
  269.       IF recnum > 0
  270.          recnumTOP = RECNO()
  271.          PagePaint = .T.
  272.       ENDIF
  273.    CASE choice = DelRecord
  274.       * ---Delete the record.
  275.       IF DELETED()
  276.          RECALL
  277.       ELSE
  278.          DELETE
  279.       ENDIF
  280.   <<if ismultials>>
  281.       panLAST = 0
  282.       PagePaint = .T.   <<*Display the whole thing*>>
  283.   <<else>>
  284.       DO {fileprefix}_DISP WITH row,1
  285.   <<endif>>
  286.    CASE choice = PgDn
  287.       IF .NOT. EOF()
  288.          GOTO recnumTOP
  289.          SKIP skipRECS
  290.          IF EOF()
  291.             GOTO BOTTOM
  292.          ENDIF
  293.          recnumTOP = RECNO()
  294.          PagePaint = .T.
  295.       ENDIF
  296.    CASE choice = PgUp
  297.       IF .NOT. BOF()
  298.          GOTO recnumTOP
  299.          SKIP -skipRECS
  300.          IF BOF()
  301.             GOTO TOP
  302.          ENDIF
  303.          recnumTOP = RECNO()
  304.          PagePaint = .T.
  305.       ENDIF
  306.    CASE choice = "L"
  307.       * ---Set FILTER.
  308.       <<GenColor( 2,'WINDOW' )>>
  309.       @ 1,0 CLEAR
  310.      <<select database 8>>  <<*Is SELECT H being used?*>>
  311.      <<if dbfnam>>          <<*Yes, then use old <expr> system...*>>
  312.       DO {fileprefix}_EXPR WITH expr
  313.      <<else>>               <<*No, use new and improved...*>>
  314.       DO {fileprefix}_COND WITH expr,notes
  315.      <<endif>>
  316.       IF "" = TRIM( expr )
  317.          SET FILTER TO
  318.       ELSE
  319.          * ---Check for valid LOGICAL expression.
  320.          IF TYPE( expr ) = "L"
  321.             SET FILTER TO &expr
  322.          ELSE
  323.            <<GenColor( 4,'PROMPT' )>>
  324.             @ rowPROMPT,0 CLEAR
  325.             @ rowPROMPT,0 SAY "Invalid expression."
  326.             WAIT
  327.          ENDIF
  328.       ENDIF
  329.       GOTO TOP
  330.       IF EOF()
  331.          <<GenColor( 3,'PROMPT' )>>
  332.          @ rowPROMPT,0 CLEAR
  333.          @ rowPROMPT,0 SAY "No matching records."
  334.          WAIT
  335.          SET FILTER TO
  336.          GOTO TOP
  337.       ENDIF
  338.       recnumTOP = RECNO()
  339.       PagePaint = .T.
  340.       <<GenColor( 2,'SCREEN' )>>
  341.       CLEAR
  342.    CASE choice = HOME
  343.       PagePaint = (pancol <> 1)
  344.       pancol = 1
  345.    CASE choice = LEFTarrow
  346.       IF pancol > 1
  347.          pancol = pancol - 1
  348.          PagePaint = .T.
  349.       ENDIF
  350.    CASE choice = RIGHTarrow
  351.       IF pancol < panMAX
  352.          pancol = pancol + 1
  353.          PagePaint = .T.
  354.       ENDIF
  355.    CASE choice = ENDkey
  356.       PagePaint = (pancol <> panMAX)
  357.       pancol = panMAX
  358.    ENDCASE
  359. ENDDO
  360. SET FILTER TO
  361. GOTO TOP
  362. * ---SET CURSOR OFF
  363.   ?? SYS(2002)
  364.  
  365. <<end>> <<*GenBrowseBody*>>
  366.  
  367.  
  368. <<procedure GenBrowseDBU>>
  369. <<begin>>
  370. PRIVATE recnumTOP,recnumLAST,skipRECS
  371. PRIVATE row,rowTOP,rowBOTTOM,rowPROMPT,KEYSTROKES,PagePaint
  372. PRIVATE isedited
  373. PRIVATE filterSAVE
  374. rowPROMPT = 23
  375. isedited = .F.
  376. filterSAVE = ""
  377. DO WHILE .T.
  378. * ---BUILD THE SCREEN
  379.    <<GenColor( 2,'SCREEN' )>>
  380.    @ 0,0,22,79 BOX ''
  381.    @ 0,0,22,79 BOX "╒═╕│╛═╘│"
  382.    @ 2,0 SAY "├"
  383.    @ 2,79 SAY "┤"
  384.    @ 2,1 SAY REPLICATE("─",78)
  385.    <<GenColor( 2,'PROMPT' )>>
  386.     @ rowPROMPT,0 CLEAR
  387.    <<GenBrowsePrompt>>
  388.    <<GenColor( 2,'SCREEN' )>>
  389.    DBEDIT(3,1,22,78,.T.,"VGBROW",.T.,.T.,.T.,.T.,"═╧═")
  390.    STORE UPPER(CHR(LASTKEY())) TO CHOICE
  391.    DO CASE
  392.    CASE choice = Returnkey
  393.       EXIT
  394.    CASE choice = "E"
  395.       recnumLAST = RECNO()
  396.       SET FILTER TO
  397.       SAVE SCREEN
  398.       DO {fileprefix}_EDIT WITH isedited
  399.       * ---Restore FILTER.
  400.       IF "" <> TRIM( filterSAVE )
  401.          SET FILTER TO &filterSAVE
  402.          GOTO TOP
  403.       ENDIF
  404.       IF recnumLAST = RECNO() .AND. .NOT. isedited
  405.          RESTORE SCREEN
  406.       ELSE
  407.          * ---Redisplay the screen.
  408.          <<GenColor( 3,'SCREEN' )>>
  409.          CLEAR
  410.          GOTO recnumLAST
  411.          * ---Do not reposition record pointer.
  412.          panLAST = 0
  413.          PagePaint = .T.
  414.       ENDIF
  415.    CASE choice = "F"
  416.       * ---Find a record.
  417.    <<select all databases>>
  418.    <<if ndxtotal = 0>>
  419.       DO SayLine WITH rowPROMPT,"*** NO INDEX FILE IN USE"
  420.       WAIT
  421.    <<elsif ismultindx>>
  422.       DO {fileprefix}_NDXS WITH rowPROMPT,choice
  423.       IF choice > "0"
  424.          recnumLAST = RECNO()
  425.          DO {fileprefix}_SEEK WITH rowPROMPT
  426.          IF EOF()
  427.             DO SayLine WITH rowPROMPT,"No find."
  428.             WAIT
  429.             GOTO recnumLAST
  430.          ELSE
  431.             recnumTOP = RECNO()
  432.             PagePaint = .T.
  433.          ENDIF
  434.       ENDIF
  435.    <<else>>
  436.       recnumLAST = RECNO()
  437.       DO {fileprefix}_SEEK WITH rowPROMPT
  438.       IF EOF()
  439.          DO SayLine WITH rowPROMPT,"No find."
  440.          WAIT
  441.          GOTO recnumLAST
  442.       ELSE
  443.          recnumTOP = RECNO()
  444.          PagePaint = .T.
  445.       ENDIF
  446.    <<endif>>
  447.    CASE choice = "G"
  448.       DO DoGOTO WITH rowPROMPT,recnum,LastRec
  449.       IF recnum > 0
  450.          recnumTOP = RECNO()
  451.          PagePaint = .T.
  452.       ENDIF
  453.    CASE choice = DelRecord
  454.       * ---Delete the record.
  455.       IF DELETED()
  456.          RECALL
  457.       ELSE
  458.          DELETE
  459.       ENDIF
  460.   <<if ismultials>>
  461.       panLAST = 0
  462.       PagePaint = .T.   <<*Display the whole thing*>>
  463.   <<else>>
  464.   <<endif>>
  465.    CASE choice = "L"
  466.       * ---Set FILTER.
  467.       <<GenColor( 2,'WINDOW' )>>
  468.       @ 1,0 CLEAR
  469.      <<select database 8>>  <<*Is SELECT H being used?*>>
  470.      <<if dbfnam>>          <<*Yes, then use old <expr> system...*>>
  471.       DO {fileprefix}_EXPR WITH expr
  472.      <<else>>               <<*No, use new and improved...*>>
  473.       DO {fileprefix}_COND WITH expr
  474.      <<endif>>
  475.       IF "" = TRIM( expr )
  476.          SET FILTER TO
  477.          filterSAVE = ""
  478.       ELSE
  479.          SET FILTER TO &expr
  480.          filterSAVE = expr
  481.       ENDIF
  482.       GOTO TOP
  483.       IF EOF()
  484.          <<GenColor( 3,'PROMPT' )>>
  485.          @ rowPROMPT,0 CLEAR
  486.          @ rowPROMPT,0 SAY "No matching records."
  487.          WAIT
  488.          SET FILTER TO
  489.          filterSAVE = ""
  490.          GOTO TOP
  491.       ENDIF
  492.       recnumTOP = RECNO()
  493.       PagePaint = .T.
  494.       <<GenColor( 2,'SCREEN' )>>
  495.       CLEAR
  496.    ENDCASE
  497. ENDDO
  498. SET FILTER TO
  499. GOTO TOP
  500. <<end>> <<*GenBrowseDBU*>>
  501.  
  502. <<* EOF: MSABROW.INC *>>
  503.