home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a046 / 5.img / TEMPLATE / SSBBROW.INC < prev    next >
Encoding:
Text File  |  1992-04-01  |  12.7 KB  |  520 lines

  1. <<* SSBBROW.INC *>>
  2. <<* (C) 1991 SHEN YANG WHITE HORSE SOFTWART COMPANY  *>>
  3.  
  4. <<procedure GenBrowseSimple>>
  5. <<begin>>
  6. <<GenColor( 0,'SCREEN' )>>
  7. CLEAR
  8. <<GenColor( 0,'STATUS' )>>
  9. @ 0,0 SAY SPACE(80)
  10. @ 0,0 SAY "╝╟┬╝║┼:  "
  11. *
  12. <<GenColor( 0,'PROMPT' )>>
  13. DO PromptBar
  14. @ 23,0 SAY "╩²╛▌┐Γ╓╨├╗╙╨╫╓╢╬."
  15. WAIT
  16. <<end>> <<*GenBrowseSimple*>>
  17.  
  18.  
  19. <<procedure GenBrowsePrompt>>
  20. <<begin>>
  21. <<*       1         2         3         4         5         6
  22. 0123456789012345678901234567890123456789012345678901234567890123456789
  23. BROWSE:  Edit   Find   Goto   fiLter  <Arrows>  <Del>  <Return>
  24. Σ»  └└:  E╨▐╕─   F▓Θ╒╥   G╠°╫¬   D╟σ└φ╔╛│²  í√ í· íⁿ í² <Del> <Return>  
  25. *>>
  26.    @ rowPROMPT,0 CLEAR
  27.    @ rowPROMPT+1,0 SAY "Σ»  └└:  E╨▐╕─   F▓Θ╒╥   G╠°╫¬   D╟σ└φ╔╛│²   "+ ;
  28.      CHR(27)+'  '+CHR(24)+'  '+CHR(25)+'  '+CHR(26)+"    <Del>  <Return>╖╡╗╪"
  29.    <<GenColor( 1,'HILITE' )>>
  30.    @ rowPROMPT+1, 9 SAY "E"
  31.    @ rowPROMPT+1,17 SAY "F"
  32.    @ rowPROMPT+1,25 SAY "G"
  33.    @ rowPROMPT+1,33 SAY "D"
  34.    @ rowPROMPT+1,60 SAY "Del"
  35.    @ rowPROMPT+1,67 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 ',substr(fileprefix,1,6),alpha,'D WITH row,1' )
  53.       endif
  54.       popmargin
  55.     endfor
  56.     genln( 'ENDCASE' )
  57.   else
  58.     genln( 'DO ',fileprefix,'D 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 ',substr(fileprefix,1,6),alpha,'D 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 "╩²╛▌┐Γ╓╨╬▐╫╓╢╬..."' )
  80.       endif
  81.       popmargin
  82.     endfor
  83.     genln( 'ENDCASE' )
  84.   else
  85.     genln( 'DO ',fileprefix,'D 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,Pagedu
  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 = "EFGLD"+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. Pagedu = .T.
  120. isedited = .F.
  121. pancol = 1
  122. panLAST = 1
  123. <<if ismultials>>
  124. DO CASE
  125.   <<forall databases>>
  126. CASE dbfarea = {"}{dbfcount}{"}
  127.     <<InitBrowse>>
  128.    panMAX = {panmax}
  129.   <<endfor>>
  130. ENDCASE
  131. <<else>>
  132. panMAX = {panmax}
  133. <<endif>>
  134. * ---Perform BROWSE.
  135. <<GenColor( 0,'SCREEN' )>>
  136. CLEAR
  137. * ---The following loop is really a "REPEAT/UNTIL <cond>".
  138. DO WHILE .T.
  139. *---SET CURSOR OFF
  140.    ?? SYS(2002)
  141.    IF PagePaint
  142.       recnum = RECNO()
  143.       GOTO recnumTOP
  144.     <<if ismultials>>
  145.       <<GenColor( 2,'HILITE' )>>
  146.       <<select database 1>>
  147.       <<filespec( dbfnam,fpath,fname,fext )>>
  148.       <<fname := fpath[1]>>
  149.       @ 0,0 SAY {"}{fname}:{"} + DBFname
  150.     <<endif>>
  151.     <<pushmargin( 2 )>>
  152.     <<GenDoDisplay>>
  153.     <<popmargin>>
  154.       GOTO recnum
  155.       IF pancol = panLAST .AND. Pagedu 
  156.          * ---Reposition record pointer when repainting current page.
  157.          row = rowTOP
  158.       ENDIF
  159.       panLAST = pancol
  160.       PagePaint = .F.
  161.    ENDIF
  162.    <<GenColor( 1,'PROMPT' )>>
  163.    DO PromptBar
  164.    <<GenBrowsePrompt>>
  165.    @ row,0 SAY CHR(16)
  166.    DO GetKey WITH choice,KEYSTROKES
  167.    * ---Reposition record pointer.
  168.    DO WHILE choice $ UParrow+DOWNarrow
  169.       @ row,0 SAY " "
  170.       IF choice = UParrow
  171.          SKIP -1
  172.          DO CASE
  173.          CASE BOF()
  174.             GOTO TOP
  175.          CASE row > rowTOP
  176.             row = row - 1
  177.          CASE row = rowtop
  178.             IF .NOT. BOF()
  179.                GOTO recnumTOP
  180.                SKIP -skipRECS
  181.                IF BOF()
  182.                   GOTO TOP
  183.                ENDIF
  184.                recnumTOP = RECNO()
  185.                PagePaint = .T.
  186.                Pagedu = .T.
  187.             ENDIF
  188.             EXIT
  189.          OTHERWISE
  190.          ENDCASE
  191.       ELSE
  192.          SKIP
  193.          DO CASE
  194.          CASE EOF()
  195.             GOTO BOTTOM
  196.          CASE row < rowBOTTOM
  197.             row = row + 1
  198.          CASE row = rowBOTTOM
  199.             IF .NOT. EOF()
  200.                GOTO recnumTOP
  201.                SKIP skipRECS
  202.                IF EOF()
  203.                   GOTO BOTTOM
  204.                ENDIF
  205.                recnumTOP = RECNO()
  206.                PagePaint = .T.
  207.                Pagedu = .T.
  208.                EXIT 
  209.             ENDIF
  210.          OTHERWISE
  211.          ENDCASE
  212.       ENDIF
  213.       @ row,0 SAY CHR(16)
  214.       DO GetKey WITH choice,KEYSTROKES
  215.    ENDDO
  216.    * ---Prompt line selections.
  217.    DO CASE
  218.    CASE choice = Returnkey
  219.       EXIT
  220.    CASE choice = "E"
  221.       recnumLAST = RECNO()
  222.       DO {fileprefix}E WITH isedited
  223.       IF recnumLAST = RECNO() .AND. .NOT. isedited
  224.          Pagepaint = .T.
  225.          Pagedu = .F.
  226.       ELSE
  227.          * ---Redisplay the screen.
  228.          <<GenColor( 3,'SCREEN' )>>
  229.          CLEAR
  230.          GOTO recnumLAST
  231.          * ---Do not reposition record pointer.
  232.          panLAST = 0
  233.          PagePaint = .T.
  234.       ENDIF
  235.    CASE choice = "F"
  236.       ?? SYS(2002,1)
  237.       * ---Find a record.
  238.    <<select all databases>>
  239.    <<if ndxtotal = 0>>
  240.       DO SayLine WITH rowPROMPT,"--- ├╗╙╨╦≈╥²╬─╝■ ---"
  241.       WAIT
  242.    <<elsif ismultindx>>
  243.       DO {fileprefix}X WITH rowPROMPT,choice
  244.       IF choice > "0"
  245.          recnumLAST = RECNO()
  246.          DO {fileprefix}Z WITH rowPROMPT
  247.          IF EOF()
  248.             DO SayLine WITH rowPROMPT,"├╗╒╥╡╜."
  249.             WAIT
  250.             GOTO recnumLAST
  251.          ELSE
  252.             recnumTOP = RECNO()
  253.             PagePaint = .T.
  254.          ENDIF
  255.       ENDIF
  256.    <<else>>
  257.       recnumLAST = RECNO()
  258.       DO {fileprefix}Z WITH rowPROMPT
  259.       IF EOF()
  260.          DO SayLine WITH rowPROMPT,"├╗╒╥╡╜."
  261.          WAIT
  262.          GOTO recnumLAST
  263.       ELSE
  264.          recnumTOP = RECNO()
  265.          PagePaint = .T.
  266.       ENDIF
  267.    <<endif>>
  268.  
  269. <<* MODIFICATIONS *>>
  270.  
  271.    CASE choice = "G"
  272.       DO DoGOTO WITH rowPROMPT,recnum,LastRec
  273.       IF recnum > 0
  274.          recnumTOP = RECNO()
  275.          PagePaint = .T.
  276.       ENDIF
  277.    CASE choice = DelRecord
  278.       * ---Delete the record.
  279.       IF DELETED()
  280.          RECALL
  281.       ELSE
  282.          DELETE
  283.       ENDIF
  284.   <<if ismultials>>
  285.       panLAST = 0
  286.       PagePaint = .T.   <<*Display the whole thing*>>
  287.   <<else>>
  288.       DO {fileprefix}D WITH row,1
  289.   <<endif>>
  290.    CASE choice = PgDn
  291.       IF .NOT. EOF()
  292.          GOTO recnumTOP
  293.          SKIP skipRECS
  294.          IF EOF()
  295.             GOTO BOTTOM
  296.          ENDIF
  297.          recnumTOP = RECNO()
  298.          PagePaint = .T.
  299.          Pagedu = .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.          Pagedu = .T.
  311.       ENDIF
  312.    CASE choice = "L"
  313.       * ---Set FILTER.
  314.       <<GenColor( 2,'WINDOW' )>>
  315.       @ 1,0 CLEAR
  316.      <<select database 8>>  <<*Is SELECT H being used?*>>
  317.      <<if dbfnam>>          <<*Yes, then use old <expr> system...*>>
  318.       DO {fileprefix}V WITH expr
  319.      <<else>>               <<*No, use new and improved...*>>
  320.       DO {fileprefix}C WITH expr,notes
  321.      <<endif>>
  322.       IF "" = TRIM( expr )
  323.          SET FILTER TO
  324.       ELSE
  325.          * ---Check for valid LOGICAL expression.
  326.          IF TYPE( expr ) = "L"
  327.             SET FILTER TO &expr
  328.          ELSE
  329.            <<GenColor( 4,'PROMPT' )>>
  330.             @ rowPROMPT,0 CLEAR
  331.             @ rowPROMPT,0 SAY "Invalid expression."
  332.             WAIT
  333.          ENDIF
  334.       ENDIF
  335.       GOTO TOP
  336.       IF EOF()
  337.          <<GenColor( 3,'PROMPT' )>>
  338.          @ rowPROMPT,0 CLEAR
  339.          @ rowPROMPT,0 SAY "╬▐┬·╫π╠⌡╝■╡─╝╟┬╝"
  340.          WAIT
  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.    CASE choice = "D"
  365.       * --- do pack   
  366.       DO {fileprefix}M WITH 23
  367.       GOTO TOP
  368.       ROW = rowtop
  369.       recnum = RECNO()
  370.       recnumtop = recnum
  371.       Pagepaint = .T.
  372.       Pagedu = .T.
  373.       isedited = .F.
  374.       pancol = 1
  375.       panlast = 1
  376.       panMAX = {panmax}
  377.    ENDCASE
  378. ENDDO
  379. SET FILTER TO
  380. GOTO TOP
  381. * ---SET CURSOR OFF
  382.   ?? SYS(2002)
  383.  
  384. <<end>> <<*GenBrowseBody*>>
  385.  
  386.  
  387. <<procedure GenBrowseDBU>>
  388. <<begin>>
  389. PRIVATE recnumTOP,recnumLAST,skipRECS
  390. PRIVATE row,rowTOP,rowBOTTOM,rowPROMPT,KEYSTROKES,PagePaint
  391. PRIVATE isedited
  392. PRIVATE filterSAVE
  393. rowPROMPT = 23
  394. isedited = .F.
  395. filterSAVE = ""
  396. DO WHILE .T.
  397. * ---BUILD THE SCREEN
  398.    <<GenColor( 2,'SCREEN' )>>
  399.    @ 2,0 SAY "├"
  400.    @ 2,79 SAY "┤"
  401.    @ 2,1 SAY REPLICATE("─",78)
  402.    <<GenColor( 2,'PROMPT' )>>
  403.     @ rowPROMPT,0 CLEAR
  404.    <<GenBrowsePrompt>>
  405.    <<GenColor( 2,'SCREEN' )>>
  406.    DBEDIT(3,1,22,78,.T.,"VGBROW",.T.,.T.,.T.,.T.,"═╧═")
  407.    STORE UPPER(CHR(LASTKEY())) TO CHOICE
  408.    DO CASE
  409.    CASE choice = Returnkey
  410.       EXIT
  411.    CASE choice = "E"
  412.       recnumLAST = RECNO()
  413.       SET FILTER TO
  414.       SAVE SCREEN
  415.       DO {fileprefix}_EDIT WITH isedited
  416.       * ---Restore FILTER.
  417.       IF "" <> TRIM( filterSAVE )
  418.          SET FILTER TO &filterSAVE
  419.          GOTO TOP
  420.       ENDIF
  421.       IF recnumLAST = RECNO() .AND. .NOT. isedited
  422.          RESTORE SCREEN
  423.       ELSE
  424.          * ---Redisplay the screen.
  425.          <<GenColor( 3,'SCREEN' )>>
  426.          CLEAR
  427.          GOTO recnumLAST
  428.          * ---Do not reposition record pointer.
  429.          panLAST = 0
  430.          PagePaint = .T.
  431.       ENDIF
  432.    CASE choice = "F"
  433.       * ---Find a record.
  434.    <<select all databases>>
  435.    <<if ndxtotal = 0>>
  436.       DO SayLine WITH rowPROMPT,"--- ╩²╛▌┐Γ╬▐╦≈╥²╬─╝■ ---"
  437.       WAIT
  438.    <<elsif ismultindx>>
  439.       DO {fileprefix}X WITH rowPROMPT,choice
  440.       IF choice > "0"
  441.          recnumLAST = RECNO()
  442.          DO {fileprefix}Z WITH rowPROMPT
  443.          IF EOF()
  444.             DO SayLine WITH rowPROMPT," ├╗╒╥╡╜ "
  445.             WAIT
  446.             GOTO recnumLAST
  447.          ELSE
  448.             recnumTOP = RECNO()
  449.             PagePaint = .T.
  450.          ENDIF
  451.       ENDIF
  452.    <<else>>
  453.       recnumLAST = RECNO()
  454.       DO {fileprefix}Z WITH rowPROMPT
  455.       IF EOF()
  456.          DO SayLine WITH rowPROMPT," ├╗╒╥╡╜ "
  457.          WAIT
  458.          GOTO recnumLAST
  459.       ELSE
  460.          recnumTOP = RECNO()
  461.          PagePaint = .T.
  462.       ENDIF
  463.    <<endif>>
  464.    CASE choice = "G"
  465.       DO DoGOTO WITH rowPROMPT,recnum,LastRec
  466.       IF recnum > 0
  467.          recnumTOP = RECNO()
  468.          PagePaint = .T.
  469.       ENDIF
  470.    CASE choice = DelRecord
  471.       * ---Delete the record.
  472.       IF DELETED()
  473.          RECALL
  474.       ELSE
  475.          DELETE
  476.       ENDIF
  477.   <<if ismultials>>
  478.       panLAST = 0
  479.       PagePaint = .T.   <<*Display the whole thing*>>
  480.   <<else>>
  481.   <<endif>>
  482.    CASE choice = "L"
  483.       * ---Set FILTER.
  484.       <<GenColor( 2,'WINDOW' )>>
  485.       @ 1,0 CLEAR
  486.      <<select database 8>>  <<*Is SELECT H being used?*>>
  487.      <<if dbfnam>>          <<*Yes, then use old <expr> system...*>>
  488.       DO {fileprefix}V WITH expr
  489.      <<else>>               <<*No, use new and improved...*>>
  490.       DO {fileprefix}C WITH expr
  491.      <<endif>>
  492.       IF "" = TRIM( expr )
  493.          SET FILTER TO
  494.          filterSAVE = ""
  495.       ELSE
  496.          SET FILTER TO &expr
  497.          filterSAVE = expr
  498.       ENDIF
  499.       GOTO TOP
  500.       IF EOF()
  501.          <<GenColor( 3,'PROMPT' )>>
  502.          @ rowPROMPT,0 CLEAR
  503.          @ rowPROMPT,0 SAY "╬▐╝╟┬╝"
  504.          WAIT
  505.          SET FILTER TO
  506.          filterSAVE = ""
  507.          GOTO TOP
  508.       ENDIF
  509.       recnumTOP = RECNO()
  510.       PagePaint = .T.
  511.       <<GenColor( 2,'SCREEN' )>>
  512.       CLEAR
  513.    ENDCASE
  514. ENDDO
  515. SET FILTER TO
  516. GOTO TOP
  517. <<end>> <<*GenBrowseDBU*>>
  518.  
  519. <<* EOF: SSBBROW.INC *>>
  520.