home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-04-25 | 7.3 KB | 288 lines |
- '
- 'If you move this prog off the ta disk remove the line below or
- 'change it to the name of the new disk.
- '
- Dir$="Totally_amos_may_92:source_progs/3dreq"
- '
- Rem **************************************************
- Rem ** David Boucher's WorkBench 2 style requesters **
- Rem **************************************************
- Rem
- Rem (C) 1991 David Boucher use these routines in you own program as
- Rem long as I get a credit
- Rem
- Dim FILE$(50) : Rem ****Required for LIST_REQ ****
- Screen Open 1,320,255,4,Lowres
- Rem **** Required for ALL requester routines ****
- Procedure BX[X,Y,XX,YY,T]
- If T=1 Then Ink 1 Else Ink 3
- Box X,Y To XX-1,YY-1
- If T=1 Then Ink 3 Else Ink 1
- Box X+1,Y+1 To XX,YY
- If T<3 Then Ink 2 : Else Ink 0
- Bar X+1,Y+1 To XX-1,YY-1
- End Proc
- Rem **** Required for STRING_REQ ****
- Procedure XINPUT[TXT$,ML,POS,CX,CY,MD]
- Shared ER,POS
- Do
- Home
- NOC=Len(TXT$)
- Locate CX,CY
- Print TXT$+Space$(ML-(NOC-1))
- Locate CX+POS,CY
- Do
- LTR$=Inkey$
- Exit If LTR$<>""
- If Mouse Click=1 and MD=1 Then ER=3 : Exit 2
- Loop
- CC=Asc(LTR$)
- SC=Scancode
- If CC=13 Then ER=1 : Exit
- If CC=27 and MD=1 Then ER=2 : Exit
- If Mouse Click=1 and MD=1 Then ER=3 : Exit
- If CC>31 and NOC<=ML-1
- If POS=NOC
- TXT$=TXT$+LTR$
- Else
- TXT$=Left$(TXT$,POS)+LTR$+Right$(TXT$,NOC-POS)
- End If
- Inc POS
- End If
- If CC=29 and POS>0
- Dec POS
- End If
- If CC=28 and POS<NOC
- Inc POS
- End If
- If CC=8 and POS>0 and NOC>0
- If POS=NOC
- TXT$=Left$(TXT$,NOC-1)
- Else
- TXT$=Left$(TXT$,POS-1)+Right$(TXT$,NOC-POS)
- End If
- Dec POS
- End If
- If SC=70 and POS<NOC and NOC>0
- If POS=0
- TXT$=Right$(TXT$,NOC-1)
- Else
- TXT$=Left$(TXT$,POS)+Right$(TXT$,NOC-(POS+1))
- End If
- End If
- Loop
- End Proc[TXT$]
- Rem **** Continue/Cancel type requester ****
- Procedure REQUEST[T1$,T2$,T3$,B1$,B2$]
- If Len(T1$)>25 Then T1$=Left$(T1$,25)
- If Len(T2$)>25 Then T2$=Left$(T2$,25)
- If Len(T3$)>25 Then T3$=Left$(T3$,25)
- If Len(B1$)>10 Then B1$=Left$(B1$,10)
- If Len(B2$)>10 Then B2$=Left$(B2$,10)
- If B1$<>"" Then B1=1
- If B2$<>"" Then B2=1
- If B1=0 and B2=0 Then Pop Proc
- TEMP=Screen
- Screen Open 7,640,61,4,Hires
- Screen Display 7,128,120,640,64
- Curs Off
- Flash Off
- Palette 0,$FFF,$888,$333
- Pen 1
- Paper 0
- Cls
- BX[200,0,440,60,1]
- If B1=1 Then BX[210,40,310,55,1]
- If B2=1 Then BX[330,40,430,55,1]
- BX[210,5,430,35,2]
- Ink 0,2,2
- Text 220,15,T1$
- Text 220,23,T2$
- Text 220,31,T3$
- O=(80-Len(B1$)*8)/2
- Text 220+O,50,B1$
- O=(80-Len(B2$)*8)/2
- Text 340+O,50,B2$
- D=0
- Do
- Do
- Z=Mouse Click
- X=X Screen(X Mouse)
- Y=Y Screen(Y Mouse)
- Z$=Inkey$
- Exit If Z$<>""
- Exit If Z=1
- Loop
- If Z$=Chr$(13) and B1=1 Then D=1
- If Z$=Chr$(27) and B2=1 Then D=2
- If X>210 and X<310 and Y>40 and Y<55 and Z=1 and B1=1 Then D=1
- If X>330 and X<430 and Y>40 and Y<55 and Z=1 and B2=1 Then D=2
- Exit If D>0
- Loop
- If D=1
- BX[210,40,310,55,2]
- Ink 0,2,2
- O=(80-Len(B1$)*8)/2
- Text 220+O,50,B1$
- Else
- BX[330,40,430,55,2]
- Ink 0,2,2
- O=(80-Len(B2$)*8)/2
- Text 340+O,50,B2$
- End If
- Wait 10
- Screen Close 7
- Screen TEMP
- End Proc[D]
- Rem **** File Type requester ****
- Procedure LIST_REQ[T$,B1$,B2$]
- Shared FILE$()
- If Len(T$)>10 Then T$=Left$(T$,25)
- If Len(B1$)>10 Then B1$=Left$(B1$,10)
- If Len(B2$)>10 Then B2$=Left$(B2$,10)
- If B1$<>"" Then B1=1
- If B2$<>"" Then B2=1
- If B1=0 and B2=0 Then Pop Proc
- TEMP=Screen
- Screen Open 7,640,61,4,Hires
- Screen Display 7,128,120,640,64
- Curs Off
- Flash Off
- Palette 0,$FFF,$888,$333
- Pen 1
- Paper 0
- Cls
- BX[200,0,440,60,1]
- BX[210,10,400,35,3]
- BX[410,5,430,15,2]
- BX[410,25,430,35,2]
- If B1=1 Then BX[210,40,310,55,1]
- If B2=1 Then BX[330,40,430,55,1]
- Ink 3
- Polygon 414,13 To 420,7 To 426,13
- Polygon 414,27 To 420,33 To 426,27
- Ink 0,2,2
- O=(80-Len(B1$)*8)/2
- Text 220+O,50,B1$
- O=(80-Len(B2$)*8)/2
- Text 340+O,50,B2$
- O=(200-Len(T$)*8)/2
- Text 210+O,8,T$
- ITEM=1
- Do
- Ink 2,0,0
- DUMMY=Free
- Text 215,17,Left$(FILE$(ITEM-1)+Space$(22),22)
- Text 215,33,Left$(FILE$(ITEM+1)+Space$(22),22)
- Ink 1,0,0
- Text 215,25,Left$(FILE$(ITEM)+Space$(22),22)
- If FILE$(ITEM+1)="" Then LAST=1 : Else LAST=0
- D=0
- Do
- Z=Mouse Click
- X=X Screen(X Mouse)
- Y=Y Screen(Y Mouse)
- Z$=Inkey$
- Exit If Z$<>""
- Exit If Z=1
- Loop
- If Z$=Chr$(31) and LAST=0 Then Inc ITEM
- If Z$=Chr$(30) and ITEM>1 Then Dec ITEM
- If Z$=Chr$(13) and B1=1 Then D=1
- If Z$=Chr$(27) and B2=1 Then D=2
- If X>210 and X<310 and Y>40 and Y<55 and Z=1 and B1=1 Then D=1
- If X>330 and X<430 and Y>40 and Y<55 and Z=1 and B2=1 Then D=2
- If X>410 and X<430 and Y>5 and Y<15 and Z=1 and ITEM>1 Then Dec ITEM
- If X>410 and X<430 and Y>25 and Y<35 and Z=1 and LAST=0 Then Inc ITEM
- Exit If D>0
- Loop
- If D=1
- BX[210,40,310,55,2]
- Ink 0,2,2
- O=(80-Len(B1$)*8)/2
- Text 220+O,50,B1$
- FILE$=FILE$(ITEM)
- Else
- BX[330,40,430,55,2]
- Ink 0,2,2
- O=(80-Len(B2$)*8)/2
- Text 340+O,50,B2$
- End If
- Wait 10
- Screen Close 7
- Screen TEMP
- End Proc[FILE$]
- Rem **** String Requester ****
- Procedure STRING_REQ[T$,B1$,B2$,TXT$]
- Shared POS,ER
- If Len(T$)>25 Then T$=Left$(T$,25)
- If Len(TXT$)>24 Then TXT$=Left$(TXT$,24)
- If Len(B1$)>10 Then B1$=Left$(B1$,10)
- If Len(B2$)>10 Then B2$=Left$(B2$,10)
- If B1$<>"" Then B1=1
- If B2$<>"" Then B2=1
- If B1=0 and B2=0 Then Pop Proc
- TEMP=Screen
- Screen Open 7,640,61,4,Hires
- Screen Display 7,128,120,640,64
- Curs Off
- Flash Off
- Palette 0,$FFF,$888,$333
- Pen 1
- Paper 0
- Cls
- BX[200,0,440,60,1]
- BX[210,22,430,33,3]
- If B1=1 Then BX[210,40,310,55,1]
- If B2=1 Then BX[330,40,430,55,1]
- Ink 0,2,2
- O=(200-Len(T$)*8)/2
- Text 220+O,15,T$
- O=(80-Len(B1$)*8)/2
- Text 220+O,50,B1$
- O=(80-Len(B2$)*8)/2
- Text 340+O,50,B2$
- POS=0
- Curs On
- Do
- XINPUT[TXT$,25,POS,27,3,1]
- TXT$=Param$
- X=X Screen(X Mouse)
- Y=Y Screen(Y Mouse)
- If X>210 and X<310 and Y>40 and Y<55 and ER=3 and B1=1 Then ER=1
- If X>330 and X<430 and Y>40 and Y<55 and ER=3 and B2=1 Then ER=2
- If ER=1
- Curs Off
- BX[210,40,310,55,2]
- Ink 0,2,2
- O=(80-Len(B1$)*8)/2
- Text 220+O,50,B1$
- Exit
- End If
- If ER=2
- Curs Off
- BX[330,40,430,55,2]
- Ink 0,2,2
- O=(80-Len(B2$)*8)/2
- Text 340+O,50,B2$
- TXT$=""
- Exit
- End If
- Loop
- Wait 10
- Screen Close 7
- Screen TEMP
- End Proc[TXT$]
- Rem
- Rem **** A Little Demo ****
- Rem
- For A=1 To 10
- FILE$(A)="FILE NUMBER"+Str$(A)
- Next
- LIST_REQ["FILE REQUESTER","LOAD!",""]
- F$=Param$
- If F$="" Then REQUEST["ERROR:","NO FILE SELECTED","","PROCEED",""] : End
- REQUEST["Load "+F$+"?","Are you sure?","","YES!","NO!"]
- P=Param
- If P=1 Then STRING_REQ["STRING REQUESTER","OK!","",F$] : Print Param$
- If P=2 Then REQUEST["ERROR:","OPERATION CANCELED","","PROCEED",""] : End