home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1978-07-26 | 3.6 KB | 201 lines |
- '
- ' *** Place These 3 Lines In The SET VARIABLES Section.
- '
- A#=0.0 : Rem Compiler Fix.
- _WINOX=-1
- _WINOY=-1
- '
- ' *** Place This Line In The SET GLOBALS Section.
- '
- Global A#,_WINX1,_WINY1,_WINX2,_WINY2,_WINOX,_WINOY
- '
- Procedure _ADDWINDOW[X1,Y1,W,H,T$,BZ]
- '
- Shared _DIALOGBUTTON$
- '
- Get Block 1,X1,Y1,(W*8),(H*8)
- '
- _DRAWUSEROBJECT[X1,Y1,X1+(W*8)-1,Y1+(H*8)-1,"WIN"+T$]
- '
- If BZ<>0
- '
- _DELETEBUTTON[1,-1]
- '
- L$=Space$(22)+Str$(Y1+(H*8))-" "+";"
- '
- Mid$(L$,1,1)="W"
- Mid$(L$,3,3)=Str$(X1)-" "
- Mid$(L$,7,3)=Str$(Y1)-" "
- Mid$(L$,11,3)=Str$(X1+(W*8)-1)-" "
- Mid$(L$,15,3)=Str$(Y1+10)-" "
- Mid$(L$,19,4)=Str$(BZ)-" "
- '
- _DIALOGBUTTON$=L$+_DIALOGBUTTON$
- '
- If _WINOX=-1 and _WINOY=-1
- _WINOX=X1
- _WINOY=Y1
- End If
- End If
- '
- _WINX1=X1
- _WINY1=Y1
- _WINX2=X1+(W*8)-1
- _WINY2=Y1+(H*8)-1
- '
- End Proc
- '
- Procedure _CLOSEWINDOW[BZ]
- '
- Put Block 1
- Del Block 1
- '
- If BZ<>0
- _DELETEBUTTON[BZ,-1]
- If A#=0.0
- _WINOX=-1
- _WINOY=-1
- End If
- End If
- '
- End Proc
- '
- Procedure _MOVEWINDOW[T$,BZ]
- '
- _GETBUTTONSTRING[BZ]
- ED$=Param$
- '
- X1=Val(Mid$(ED$,3,3))
- Y1=Val(Mid$(ED$,7,3))
- W=((Val(Mid$(ED$,11,3))-X1)/8)+1
- H=((Val(Mid$(ED$,23,3))-Y1)/8)
- '
- Get Block 2,X1,Y1,W*8,H*8
- '
- XX=X Screen(X Mouse)-X1
- YY=Y Screen(Y Mouse)-Y1
- '
- Gr Writing 2
- While Mouse Key>0
- '
- X=X Screen(X Mouse)
- Y=Y Screen(Y Mouse)
- '
- If X-XX<0
- X=XX
- X Mouse=X Hard(XX)
- End If
- '
- If Y-YY<0
- Y=YY
- Y Mouse=Y Hard(YY)
- End If
- '
- If(X-XX)+(W*8)>Screen Width-1
- X=XX+(Screen Width-(W*8))-1
- X Mouse=X Hard(XX+(Screen Width-(W*8))-1)
- End If
- '
- If(Y-YY)+(H*8)>Screen Height-1
- Y=YY+(Screen Height-(Y*8))-1
- Y Mouse=Y Hard(YY+(Screen Height-(H*8))-1)
- End If
- '
- Box X-XX,Y-YY To(X-XX)+(W*8)-1,(Y-YY)+(H*8)-1
- '
- Repeat
- Until X<>X Screen(X Mouse) or Y<>Y Screen(Y Mouse) or Mouse Key=0
- '
- Box X-XX,Y-YY To(X-XX)+(W*8)-1,(Y-YY)+(H*8)-1
- '
- Wend
- Gr Writing 1
- '
- A#=1.0
- _CLOSEWINDOW[BZ]
- A#=0.0
- '
- _ADDWINDOW[X-XX,Y-YY,W,H,T$,-BZ]
- '
- Put Block 2,X-XX,Y-YY
- Del Block 2
- '
- End Proc
- '
- Procedure _CHECKWINBUTTONS
- '
- Shared _DIALOGBUTTON$
- '
- MX=X Screen(X Mouse)
- MY=Y Screen(Y Mouse)
- If(MX<_WINX1 or MX>_WINX2 or MY<_WINY1 or MY>_WINY2) and Mouse Key>0
- _FLASH
- End If
- '
- ZN=0
- I1=1
- I2=1
- '
- While I2<Len(_DIALOGBUTTON$)
- '
- I2=Instr(_DIALOGBUTTON$,";",I1)
- L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
- '
- AC=Asc(Mid$(L$,1,1))
- X1=Val(Mid$(L$,3,3))
- Y1=Val(Mid$(L$,7,3))
- X2=Val(Mid$(L$,11,3))
- Y2=Val(Mid$(L$,15,3))
- BZ=Val(Mid$(L$,19,4))
- '
- WT=1
- If BZ<0
- BZ=-BZ
- WT=0
- End If
- '
- If BZ<>1
- WX=(X1-_WINOX)
- WY=(Y1-_WINOY)
- '
- BW=(X2-X1)
- BH=(Y2-Y1)
- '
- X1=_WINX1+WX
- Y1=_WINY1+WY
- X2=_WINX1+WX+BW
- Y2=_WINY1+WY+BH
- '
- End If
- '
- _CHECKZONE[X1,Y1,X2,Y2,WT]
- If Param and(AC>64 and AC<91) : Rem A to Z.
- ZN=BZ
- Goto FIN
- End If
- '
- I1=I2+1
- '
- Wend
- '
- FIN:
- '
- End Proc[ZN]
- '
- Procedure _FLASH
- '
- Shared _BACK
- '
- C=Colour(_BACK)
- '
- R=(Colour(_BACK)/256)/2
- G=(Colour(_BACK)/16 mod 16)/2
- B=(Colour(_BACK) mod 16)/2
- '
- Colour _BACK,R*256+G*16+B
- '
- Wait 10
- '
- Colour _BACK,C
- '
- End Proc