home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / CLIPPER / SCRNUZ / MEMPRTSC.PRG < prev    next >
Text File  |  1992-11-11  |  10KB  |  296 lines

  1. *----------------------------------------------------------------------------
  2. *
  3. *   Program Name: MEMPRTSC.PRG      Copyright: EDON Corporation                                         
  4. *   Date Created: 02/26/91           Language: Clipper S'87                                             
  5. *   Time Created: 17:58:49             Author: Ed Phillips                               
  6. *    Description: Print Current Screen function for Memscrn.prg (Alt-P)
  7. *----------------------------------------------------------------------------
  8.  
  9. PROCEDURE PrintScreen
  10.    PRIVATE dscrn, i, j,temp, poldcolor
  11.  
  12.    poldcolor = Setcolor()
  13.    temp = Savescreen(1,0,24,79)                 && save scrn, strip attributes
  14.    output = 'QUIT'
  15.    f_name = Space(20)
  16.    lines = 58
  17.    page = 1
  18.    send_ff = .f.
  19.    Get_device()
  20.    phdr = 'Gets_hdr'
  21.    rpt_wid = 138
  22.  
  23.    IF output != 'QUIT'
  24.  
  25.       IF output = 'SCREEN'
  26.          Sayhelp('Extracting Screen Text ...')
  27.       ENDIF                                   && IF output != 'SCREEN'
  28.  
  29.       charcnt = 80 * 24                          &&(r - l + 1) * (b - t + 1)
  30.       dscrn = ' '
  31.       j = 1
  32.       FOR i = 1 TO charcnt
  33.          dscrn = dscrn + Subs(temp,j,1)
  34.          j = j + 2
  35.       NEXT                                          && FOR i = 1 TO charcnt
  36.       dscrn = Subs(dscrn,2)
  37.    ENDIF                                         && IF output != 'QUIT'
  38.  
  39.    prt = EOSprint()
  40.    BEGIN SEQUENCE
  41.       IF (output = 'QUIT') .OR. (output = 'FILE' .AND. Empty(f_name)) .OR. Eof()
  42.          BREAK
  43.       ELSEIF output = 'SCREEN'
  44.          prt = EOSprint()
  45.          scrn_file = MakScrnDBF(rpt_wid)
  46.          Pop_win('Creating Report...')
  47.          SET PRINTER TO (scrn_file)
  48.          SET DEVICE TO PRINT
  49.       ELSEIF output = 'PRINTER'
  50.          prt = EOSprint()
  51.          IF prt # 'Local Dot Matrix'   &&Epson FX'
  52.             mem_defprt = 'HP Laser'
  53.             Ljreset()
  54.             Ljland()
  55.             rpt_wid = 80
  56.             lines = 43
  57.             SET MARGIN TO 10
  58.          ELSE                                             && OTHERWISE...
  59.             mem_defprt = 'Epson FX'
  60.             Epson17()
  61.             rpt_wid = 130
  62.             send_ff = .t.
  63.             SET MARGIN TO 0
  64.          ENDIF
  65.          Setprc(0,0)
  66.       ENDIF                                && IF output = 'PRINTER'
  67.  
  68.       Saycxl()
  69.       ptit = 'Screen Name: '+Trim(Scrn_name)
  70.       ptit1 = 'Coordinates:  Top - '+Strzero(St,2)+', Left - '+Strzero(Sl,2)+;
  71.               ', Bottom - '+Strzero(Sb,2)+', Right - '+Strzero(Sr,2)
  72.       ptit2 = 'Shadow: '+Transform(Shadow,"Y")+Space(5)+'Explode: '+Transform(Explode,"9")
  73.  
  74.       @ Lc()+1,Rpt_centr(ptit,rpt_wid) SAY ptit
  75.       @ Lc()+2,Rpt_centr(ptit1,rpt_wid) SAY ptit1
  76.       @ Lc()+1,Rpt_centr(ptit2,rpt_wid) SAY ptit2
  77.  
  78.       *---------------------
  79.       * Print top ruler line
  80.       *---------------------
  81.       @ Lc()+3,0 SAY '  '
  82.       x = 12
  83.       FOR i = 1 TO 7
  84.          @ Lc(),x SAY Str(i,1)+Space(9)
  85.          x = x + 10
  86.       NEXT                                    && FOR i = 1 TO 8
  87.  
  88.       @ Lc()+1,0 SAY '  '
  89.       x = 2
  90.       FOR i = 1 TO 8
  91.          @ Lc(),x SAY '0123456789'
  92.          x = x + 10
  93.       NEXT
  94.  
  95.       *-----------------
  96.       * Print the screen
  97.       *-----------------
  98.       j = 1
  99.       FOR i = 1 TO 24
  100.          @ Lc()+1,0 SAY Strzero(i,2)+Subs(dscrn,j,80)
  101.          j = j + 80
  102.       NEXT                                       && FOR i = 1 TO 24
  103.  
  104.       *---------------
  105.       * Print the Gets
  106.       *---------------
  107.       IF output = 'PRINTER' .AND. prt # 'Local Dot Matrix'
  108.          Ljcondense()
  109.          rpt_wid = 138
  110.       ENDIF                                      && IF output = 'PRINTER' .AND. prt # 'Local Dot Matrix'
  111.  
  112.       SELECT ScrnGets
  113.       SEEK Scr_file->Scrn_name
  114.  
  115.       IF ! Eof()
  116.          Rpt_header(1,output,Lc(),.t.)
  117.       ENDIF
  118.  
  119.       DO WHILE Scrn_name = Scr_file->Scrn_name .AND. ! Eof()
  120.          *-------------
  121.          * Escape route
  122.          *-------------
  123.          cxl = Inkey()
  124.          IF cxl = esc
  125.             EXIT
  126.          ENDIF
  127.  
  128.          IF ! Enuf_ln(Lc(),lines,2)
  129.             Rpt_header(1,output,1,.t.)
  130.          ENDIF
  131.  
  132.          @ Lc()+1,0 SAY G_var
  133.          @ Lc(),15  SAY G_row
  134.          @ Lc(),20  SAY G_pic
  135.          @ Lc(),52  SAY G_when
  136.          @ Lc(),84  SAY Say_exp
  137.  
  138.          @ Lc()+1,5 SAY Gs_flag
  139.          @ Lc(),15  SAY G_col
  140.          @ Lc(),20  SAY G_color
  141.          @ Lc(),52  SAY G_valid
  142.          @ Lc(),84  SAY Say_pict
  143.          @ Lc(),116 SAY Say_color
  144.          @ Lc()+1,0 SAY ''
  145.          SKIP
  146.       ENDDO
  147.  
  148.       *---------------
  149.       * Print the Menu
  150.       *---------------
  151.       SELECT ScrnMenu
  152.       SEEK Scr_file->Scrn_name
  153.  
  154.       phdr = 'Menu_hdr'
  155.       rpt_wid = 117
  156.  
  157.       IF ! Eof()
  158.          Rpt_header(1,output,Lc(),.t.)
  159.       ENDIF
  160.  
  161.       DO WHILE Scrn_name = Scr_file->Scrn_name .AND. ! Eof()
  162.          *-------------
  163.          * Escape route
  164.          *-------------
  165.          cxl = Inkey()
  166.          IF cxl = esc
  167.             EXIT
  168.          ENDIF
  169.  
  170.          IF ! Enuf_ln(Lc(),lines,2)
  171.             Rpt_header(1,output,1,.t.)
  172.          ENDIF
  173.  
  174.          @ Lc()+1,0 SAY M_func
  175.          @ Lc(),43  SAY M_row
  176.          @ Lc(),47  SAY Trim(M_prompt)
  177.          @ Lc()+1,43 SAY M_col
  178.          @ Lc(),47  SAY M_msg
  179.  
  180.          @ Lc()+1,0 SAY ''
  181.          SKIP
  182.       ENDDO
  183.  
  184.       *---------------
  185.       * Print the Rpt Record
  186.       *---------------
  187.       SELECT ScrnRpts
  188.       SEEK Scr_file->Scrn_name
  189.  
  190.       phdr = 'Rpt_hdr'
  191.       rpt_wid = 89
  192.       SET MARGIN TO 10
  193.  
  194.       IF ! Eof()
  195.          Lj10()
  196.          Rpt_header(1,output,Lc(),.t.)
  197.  
  198.          @ Lc()+2,0 SAY 'Report Name:      '+RptName
  199.          @ Lc()+2,0 SAY 'Page Header Proc: '+Phdr
  200.          @ Lc()+2,0 SAY 'Detail Proc:      '+Detproc
  201.          @ Lc()+2,0 SAY 'Main Condition:   '+Trim(MainCond)
  202.          @ Lc()+2,0 SAY 'Detail Condition: '+Trim(Detcond)
  203.          @ Lc()+2,0 SAY 'Footer Proc:      '+FtrProc
  204.          @ Lc()+2,0 SAY 'Report Width:     '+Ltrim(Str(Rpt_wid,3))
  205.          @ Lc()+2,0 SAY 'Left Margin:      '+Ltrim(Str(Lm,2))
  206.       ENDIF
  207.  
  208.  
  209.       IF output = 'PRINTER'
  210.          IF prt # 'Local Dot Matrix'   &&Epson FX'
  211.             mem_defprt = 'HP Laser'
  212.             Ljreset()
  213.          ELSE                                             && OTHERWISE...
  214.             mem_defprt = 'Epson FX'
  215.             Epson10()
  216.          ENDIF
  217.       ENDIF                                && IF output = 'PRINTER'
  218.       SET MARGIN TO 0
  219.  
  220.       Eorpt(send_ff)
  221.  
  222.       IF output = 'SCREEN'
  223.          scrn_rec = RptToDBF(scrn_file)
  224.          IF scrn_rec > 0
  225.             Brpt(1,0,23,79,rpt_wid,scrn_file)
  226.          ENDIF                                         && IF scrn_rec > 0
  227.          CleanRPT(scrn_file)
  228.       ENDIF                                            && IF output = 'SCREEN'
  229.    END                                     && BEGIN SEQUENCE
  230.  
  231.    SELECT Scr_file
  232.    Setcolor(poldcolor)
  233.    Restscreen(1,0,24,79,temp)
  234. RETURN
  235.  
  236. PROC Gets_hdr
  237.    PARA page, ln
  238.    PRIV tit1, tit2, tit3, var
  239.  
  240.    tit1 = "Screen Manager Screen Report"
  241.    tit2 = "Screen Name: "+Trim(Scrn_name)
  242.  
  243.    @ Lc()+1,0 SAY page PICT "@R Page: ###"
  244.    @ Lc(),Rpt_centr(tit1,rpt_wid) SAY tit1
  245.    @ Lc(), rpt_wid-15 SAY "As Of: "+Dtoc(Date())
  246.  
  247.    @ Lc()+2,Rpt_centr(tit2,rpt_wid) SAY tit2
  248.  
  249.    @ Lc()+2,0 SAY "Variable       Row  GET Picture                     PreCondition                    SAY Expression"
  250.    @ Lc()+1,0 SAY "GS Flag        Col  GET Color                       PostCondition                   SAY Picture                     SAY Color"
  251.    @ Lc()+1,0 SAY "─────────────  ───  ──────────────────────────────  ──────────────────────────────  ──────────────────────────────  ────────────────────"
  252.  
  253.    *               0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
  254.    *                         1         2         3         4         5         6         7         8         9         0         1         2         3         4         5
  255. RETURN
  256.  
  257. PROC Menu_hdr
  258.    PARA page, ln
  259.    PRIV tit1, tit2, tit3, var
  260.  
  261.    tit1 = "Screen Manager Screen Report"
  262.    tit2 = "Screen Name: "+Trim(Scrn_name)
  263.  
  264.    @ Lc()+1,0 SAY page PICT "@R Page: ###"
  265.    @ Lc(),Rpt_centr(tit1,rpt_wid) SAY tit1
  266.    @ Lc(), rpt_wid-15 SAY "As Of: "+Dtoc(Date())
  267.  
  268.    @ Lc()+2,Rpt_centr(tit2,rpt_wid) SAY tit2
  269.  
  270.    @ Lc()+2,0 SAY "                                          Row  Menu Prompt"
  271.    @ Lc()+1,0 SAY "Menu Function                             Col  Message"
  272.    @ Lc()+1,0 SAY "────────────────────────────────────────  ───  ──────────────────────────────────────────────────────────────────────"
  273.                   *cccccccccccccccccccccccccccccccccccccccc   cc  cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
  274.    *               0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
  275.    *                         1         2         3         4         5         6         7         8         9         0         1         2         3         4         5
  276. RETURN
  277.  
  278. PROC Rpt_hdr
  279.    PARA page, ln
  280.    PRIV tit1, tit2, tit3, var
  281.  
  282.    tit1 = "Screen Manager Screen Report"
  283.    tit2 = "Screen Name: "+Trim(Scrn_name)
  284.  
  285.    @ Lc()+1,0 SAY page PICT "@R Page: ###"
  286.    @ Lc(),Rpt_centr(tit1,rpt_wid) SAY tit1
  287.    @ Lc(), rpt_wid-15 SAY "As Of: "+Dtoc(Date())
  288.  
  289.    @ Lc()+2,Rpt_centr(tit2,rpt_wid) SAY tit2
  290.  
  291.                   *cccccccccccccccccccccccccccccccccccccccc   cc  cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
  292.    *               0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
  293.    *                         1         2         3         4         5         6         7         8         9         0         1         2         3         4         5
  294. RETURN
  295. * EOF: Memprtsc.prg
  296.