******************************************************************************* * * * Author - Nick Makris - STARTECH SYSTEMS - San Francisco, CA * * Date - DECEMBER 1987 * * * * ************ PRINTER SELECT PROGRAM ************ * * * * COPYRIGHT - STARTECH SYSTEMS - 1987, 1988, 1989, 1990 * * * * *********** All RIGHTS RESERVED ************* * * * ******************************************************************************* MABORT=.F. COMMA1=AT(',',SET("ATTRIBUTES")) COMMA2=AT(',',SUBSTR(SET("ATTRIBUTES"),COMMA1+1)) OLDCLR=SUBSTR(SET("ATTRIBUTES"),1,COMMA1+COMMA2-1) COMMA1=AT(',',SVCOLOR) SLASH1=AT('/',SVCOLOR) REVCOLOR=SUBSTR(SVCOLOR,SLASH1+1,COMMA1-(SLASH1+1))+'/'+SUBSTR(SVCOLOR,1,SLASH1-1) SET BORDER TO DOUBLE SVBELL = SET("BELL") SET BELL OFF SVCNFRM = SET("CONFIRM") SET CONFIRM OFF TCWEA = ALIAS() SAVE SCREEN TO TEMPX9 USE PRTROPTS IN SELECT() SELECT PRTROPTS if reccount() = 0 SET COLOR TO &FLASHCLR @13,10 TO 18,70 DOUBLE SET COLOR TO &GETCOLOR @14,11 CLEAR TO 17,69 @15,13 SAY "THERE ARE NO PRINTER RECORDS IN THE PRTROPTS DATA BASE!" @16,13 SAY "PROGRAM ABORTED!! CONTACT THE SYSTEM ADMINISTRATOR!" CLOSE DATABASES SET COLOR TO &SVCOLOR TZP = INKEY(60) CANCEL endif PRTSELTD = .T. if reccount() = 1 DO WHILE .T. PTREC=1 IF (PFORM # PTREC) .OR. LEN(TRIM(PNAME))=0 PFORM=PTREC RESTORE SCREEN FROM TEMPX9 DO PSPOOLER WITH PTREC,PRTSELTD && this is done only the first time SVPROMPT=PNAME ENDIF RESTORE SCREEN FROM TEMPX9 IF .NOT. PRINTSTATUS() DO CHKPRTR ENDIF IF PRTSELTD .OR. MABORT EXIT ENDIF ENDDO RESTORE SCREEN FROM TEMPX9 SET CONFIRM &SVCNFRM SET BELL &SVBELL SELECT PRTROPTS USE && close database IF LEN(TRIM(TCWEA)) # 0 SELECT &TCWEA tcwea=space(15) ENDIF RELEASE SCREENS TEMPX9 RETURN ENDIF X=CEILING(RECCOUNT()/2) IF X>4 X=4 ELSE IF X<2 X=2 ENDIF ENDIF DEFINE POPUP GETPRNTR FROM 11-X,27 TO 11+X,53 PROMPT FIELD PRTRNAME ON SELECTION POPUP GETPRNTR DO PRTSEL DO WHILE .T. SET COLOR TO &SVCOLOR @9-X,15 CLEAR TO 14+X,65 @9-X,15 TO 14+X,65 DOUBLE @12+X,22 SAY "SELECT ANY PRINTER WITH THE ARROW KEYS" @13+X,17 SAY "PRESS ON HIGHLIGHTED PRINTER OF CHOICE!" SET COLOR TO &HICOLOR @10-X,31 SAY "SELECT PRINTER MENU" PTREC=0 Y=AT('/',SVCOLOR)+1 SET COLOR OF BOX TO &REVCOLOR SET COLOR OF HIGHLIGHT TO &GETCOLOR SET COLOR OF MESSAGES TO N+/W SVPROMPT=' ' PRTSELTD=.F. XX=1 clear typeahead DO WHILE XX DO CHKPRTR IF .NOT. PRTSELTD && PRINTER NOT READY AND USER WANT'S TO CHANGE RESTORE SCREEN FROM TEMPX9 LOOP ELSE && PRINTER OK BUT USER DIDN'T SELECT PRTSELTD=.F. && FOR USE IN CALLING PROGRAMS ENDIF EXIT ENDIF RESTORE SCREEN FROM TEMPX9 ENDDO SELECT PRTROPTS USE && close database IF LEN(TRIM(TCWEA)) # 0 SELECT &TCWEA tcwea=space(15) ENDIF RESTORE SCREEN FROM TEMPX9 RELEASE SCREENS TEMPX9 SET CONFIRM &SVCNFRM SET BELL &SVBELL SET COLOR TO &OLDCLR RETURN PROCEDURE CHKPRTR SAVE SCREEN TO XSVSCR PRTSELTD = .t. IF PRINTSTATUS() return ELSE DO WHILE .T. restore screen from xsvscr xxxkkk = 0 set color to w+/w @14,6 CLEAR TO 17,73 @14,6 TO 17,73 DOUBLE IF ISCOLOR() SET COLOR TO GR+/N ELSE SET COLOR TO W+/N ENDIF @15,8 say "Your printer is not ready - correct & press any key when ready! " @16,8 say "Press to change printers, exits printer check!" set color to &svcolor xxxkkk=INKEY(10) restore screen from xsvscr IF PRINTSTATUS() return ENDIF IF xxxkkk = 27 && user pressed MABORT=.T. EXIT ENDIF IF xxxkkk = 23 && user pressed PRTSELTD = .f. EXIT ENDIF LOOP ENDDO ENDIF RETURN PROCEDURE PRTSEL PRTSELTD=.T. PTREC=BAR() SVPROMPT=UPPER(PROMPT()) DEACTIVATE POPUP