home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 85 / af085a.adf / archives / af85a1.lzx / Dialog_Procedures / Source / Windows.ASC < prev   
Encoding:
Text File  |  1978-07-26  |  3.6 KB  |  202 lines

  1. '
  2. ' *** Place These 3 Lines In The SET VARIABLES Section.
  3. '
  4. A#=0.0 : Rem Compiler Fix.
  5. _WINOX=-1
  6. _WINOY=-1
  7. '
  8. ' *** Place This Line In The SET GLOBALS Section.
  9. '
  10. Global A#,_WINX1,_WINY1,_WINX2,_WINY2,_WINOX,_WINOY
  11. '
  12. Procedure _ADDWINDOW[X1,Y1,W,H,T$,BZ]
  13.    '
  14.    Shared _DIALOGBUTTON$
  15.    '
  16.    Get Block 1,X1,Y1,(W*8),(H*8)
  17.    '
  18.    _DRAWUSEROBJECT[X1,Y1,X1+(W*8)-1,Y1+(H*8)-1,"WIN"+T$]
  19.    '
  20.    If BZ<>0
  21.       '      
  22.       _DELETEBUTTON[1,-1]
  23.       '
  24.       L$=Space$(22)+Str$(Y1+(H*8))-" "+";"
  25.       '
  26.       Mid$(L$,1,1)="W"
  27.       Mid$(L$,3,3)=Str$(X1)-" "
  28.       Mid$(L$,7,3)=Str$(Y1)-" "
  29.       Mid$(L$,11,3)=Str$(X1+(W*8)-1)-" "
  30.       Mid$(L$,15,3)=Str$(Y1+10)-" "
  31.       Mid$(L$,19,4)=Str$(BZ)-" "
  32.       '
  33.       _DIALOGBUTTON$=L$+_DIALOGBUTTON$
  34.       '
  35.       If _WINOX=-1 and _WINOY=-1
  36.          _WINOX=X1
  37.          _WINOY=Y1
  38.       End If 
  39.    End If 
  40.    '
  41.    _WINX1=X1
  42.    _WINY1=Y1
  43.    _WINX2=X1+(W*8)-1
  44.    _WINY2=Y1+(H*8)-1
  45.    '
  46. End Proc
  47. '
  48. Procedure _CLOSEWINDOW[BZ]
  49.    '
  50.    Put Block 1
  51.    Del Block 1
  52.    '
  53.    If BZ<>0
  54.       _DELETEBUTTON[BZ,-1]
  55.       If A#=0.0
  56.          _WINOX=-1
  57.          _WINOY=-1
  58.       End If 
  59.    End If 
  60.    '
  61. End Proc
  62. '
  63. Procedure _MOVEWINDOW[T$,BZ]
  64.    '
  65.    _GETBUTTONSTRING[BZ]
  66.    ED$=Param$
  67.    '
  68.    X1=Val(Mid$(ED$,3,3))
  69.    Y1=Val(Mid$(ED$,7,3))
  70.    W=((Val(Mid$(ED$,11,3))-X1)/8)+1
  71.    H=((Val(Mid$(ED$,23,3))-Y1)/8)
  72.    '
  73.    Get Block 2,X1,Y1,W*8,H*8
  74.    '
  75.    XX=X Screen(X Mouse)-X1
  76.    YY=Y Screen(Y Mouse)-Y1
  77.    '
  78.    Gr Writing 2
  79.    While Mouse Key>0
  80.       '
  81.       X=X Screen(X Mouse)
  82.       Y=Y Screen(Y Mouse)
  83.       '
  84.       If X-XX<0
  85.          X=XX
  86.          X Mouse=X Hard(XX)
  87.       End If 
  88.       '
  89.       If Y-YY<0
  90.          Y=YY
  91.          Y Mouse=Y Hard(YY)
  92.       End If 
  93.       '
  94.       If(X-XX)+(W*8)>Screen Width-1
  95.          X=XX+(Screen Width-(W*8))-1
  96.          X Mouse=X Hard(XX+(Screen Width-(W*8))-1)
  97.       End If 
  98.       '
  99.       If(Y-YY)+(H*8)>Screen Height-1
  100.          Y=YY+(Screen Height-(Y*8))-1
  101.          Y Mouse=Y Hard(YY+(Screen Height-(H*8))-1)
  102.       End If 
  103.       '
  104.       Box X-XX,Y-YY To(X-XX)+(W*8)-1,(Y-YY)+(H*8)-1
  105.       '
  106.       Repeat 
  107.       Until X<>X Screen(X Mouse) or Y<>Y Screen(Y Mouse) or Mouse Key=0
  108.       '
  109.       Box X-XX,Y-YY To(X-XX)+(W*8)-1,(Y-YY)+(H*8)-1
  110.       '
  111.    Wend 
  112.    Gr Writing 1
  113.    '
  114.    A#=1.0
  115.    _CLOSEWINDOW[BZ]
  116.    A#=0.0
  117.    '
  118.    _ADDWINDOW[X-XX,Y-YY,W,H,T$,-BZ]
  119.    '
  120.    Put Block 2,X-XX,Y-YY
  121.    Del Block 2
  122.    '
  123. End Proc
  124. '
  125. Procedure _CHECKWINBUTTONS
  126.    '
  127.    Shared _DIALOGBUTTON$
  128.    '
  129.    MX=X Screen(X Mouse)
  130.    MY=Y Screen(Y Mouse)
  131.    If(MX<_WINX1 or MX>_WINX2 or MY<_WINY1 or MY>_WINY2) and Mouse Key>0
  132.       _FLASH
  133.    End If 
  134.    '
  135.    ZN=0
  136.    I1=1
  137.    I2=1
  138.    '
  139.    While I2<Len(_DIALOGBUTTON$)
  140.       '
  141.       I2=Instr(_DIALOGBUTTON$,";",I1)
  142.       L$=Mid$(_DIALOGBUTTON$,I1,I2-I1)
  143.       '
  144.       AC=Asc(Mid$(L$,1,1))
  145.       X1=Val(Mid$(L$,3,3))
  146.       Y1=Val(Mid$(L$,7,3))
  147.       X2=Val(Mid$(L$,11,3))
  148.       Y2=Val(Mid$(L$,15,3))
  149.       BZ=Val(Mid$(L$,19,4))
  150.       '
  151.       WT=1
  152.       If BZ<0
  153.          BZ=-BZ
  154.          WT=0
  155.       End If 
  156.       '
  157.       If BZ<>1
  158.          WX=(X1-_WINOX)
  159.          WY=(Y1-_WINOY)
  160.          '
  161.          BW=(X2-X1)
  162.          BH=(Y2-Y1)
  163.          '
  164.          X1=_WINX1+WX
  165.          Y1=_WINY1+WY
  166.          X2=_WINX1+WX+BW
  167.          Y2=_WINY1+WY+BH
  168.          '
  169.       End If 
  170.       '
  171.       _CHECKZONE[X1,Y1,X2,Y2,WT]
  172.       If Param and(AC>64 and AC<91) : Rem A to Z.
  173.          ZN=BZ
  174.          Goto FIN
  175.       End If 
  176.       '
  177.       I1=I2+1
  178.       '
  179.    Wend 
  180.    '
  181.    FIN:
  182.    '
  183. End Proc[ZN]
  184. '
  185. Procedure _FLASH
  186.    '
  187.    Shared _BACK
  188.    '
  189.    C=Colour(_BACK)
  190.    '
  191.    R=(Colour(_BACK)/256)/2
  192.    G=(Colour(_BACK)/16 mod 16)/2
  193.    B=(Colour(_BACK) mod 16)/2
  194.    '
  195.    Colour _BACK,R*256+G*16+B
  196.    '
  197.    Wait 10
  198.    '
  199.    Colour _BACK,C
  200.    '
  201. End Proc
  202.