|
!Win.版 サンプル閲覧実行ツール746
!----------------------------------------------------------
!各 ウィンドウの、左上位置(x0,y0)と、幅(xw,yw)。
CALL SetWindowPos( WinHandle("MAIN" ),0, 0, 0, 720,600, 0)
CALL SetWindowPos( WinHandle("TEXT" ),0, 0, 70, 514,670, 0)
CALL SetWindowPos( WinHandle("GRAPHICS" ),0, 515,172, 0, 0, 1)
SUB SetWindowPos( handle, C2, x0,y0,xw,yw, nFLG ) !nFLG: 0=x0y0xwyw 1=x0y0 2=xwyw
ASSIGN "user32.dll","SetWindowPos"
END SUB
!----------------------------------------------------------
!SET directory "C:\BASICw32" !アーカイブ版の多く。
!SET directory "C:\WINDOWS\デスクトップ\BASIC746" !私の場合。
SET directory "C:\Program Files\Decimal BASIC\BASICw32" !インストール版の、デフォルト。
!ここで、エラー停止した方、または、表示が出ない方 は、
!上のパス名を、ご自身の 十進BASICフォルダー に直して下さい。
!このプログラム自体が、そこから起動される場合は、削除しても可。
!
!----------------------------------------------------------
SET BITMAP SIZE 501,501
LET V=5 !表示列数
SET WINDOW 0, V, 27,-6
SET AREA COLOR 5
DIM p$(5*V),wild$(5*V),names$(200)
DATA TEXTFILE\, Tutorial\, UserLib\, COMM\, Complex\
DATA FRACTAL\ , FUNCTION\, Library\, Math\, MICROSFT\
DATA "Q&A\", SAMPLE\, STATEMEN\, ".\"
! ↑ BASIC フォルダー自体
FOR f=1 TO 25
READ IF MISSING THEN EXIT FOR: w$
FILE splitname(w$) p$(f), name$, ext$ !ext$は語頭に"."含む。
IF ext$="" THEN LET wild$(f)="*.*" ELSE LET wild$(f)=name$& ext$
NEXT f
!
LET w=12 !最初に開くフォルダー、1~?番目(上のDATA 文)
CALL basfiles
!----------------------------------------------------------
OPEN #9 :TextWindow2
ERASE #9
CALL SetWindowPos( WinHandle("TEXTWINDOW2"),0, 515, 0, 509,180, 0)
PRINT #9 :"フォルダーを、選んで"
PRINT #9 :"ファイル名を、左クリックすると、内容表示する。"
PRINT #9 :" ↑ 重ねて、左クリックすると、(.BAS ならば、)"
PRINT #9 :" BASIC を、新しく起動、実行できます。 閉じると、続行。"& CHR$(0)
DO
MOUSE POLL mx,my,mlb,mrb
IF mrb=1 THEN EXIT DO !右クリック
IF mlb=1 THEN !左クリック
IF -1< my THEN
IF 0< my THEN LET b=INT(mx)*27+CEIL(my) ELSE LET b=bak+1
IF b=< n THEN
IF b<>bak THEN
CALL sampdisp
ELSEIF UCASE$(right$(names$(b),4))=".BAS" THEN
execute "BASIC.EXE" WITH("/NR",p$(m)& names$(b))
CALL SetWindowPos( WinHandle("MAIN" ),0, 0, 0, 720,600, 0)
CALL SetWindowPos( WinHandle("TEXT" ),0, 0, 70, 514,670, 0)
CALL SetWindowPos( WinHandle("GRAPHICS" ),0, 515,172, 0, 0, 1)
CALL SetWindowPos( WinHandle("TEXTWINDOW2"),0, 515, 0, 509,180, 0)
END IF
END IF
ELSEIF my< -1 THEN
LET w=INT(my+6)*V+CEIL(mx)
IF w< f THEN CALL basfiles
END IF
LET i=0
DO
WAIT DELAY .02
MOUSE POLL mx,my,mlb,mrb
IF mlb=0 AND mrb=0 THEN LET i=i+1 ELSE LET i=0
LOOP UNTIL 5< i !マウスボタンが離れるまで待つ。
END IF
WAIT DELAY 0 !クロックアップを押える
LOOP
PLOT AREA:0,-1;V,-1;V,0;0,0
SET TEXT BACKGROUND "TRANSPARENT" !background none
PLOT TEXT,AT V*.3,0 :"終了しました。"
!-------------
SUB basfiles
LET m=w
CLEAR
PLOT AREA:0,-1;V,-1;V,0;0,0
SET TEXT BACKGROUND "TRANSPARENT" !background none
PLOT TEXT,AT V*.17,0 :"ココを左クリックすると順送り。 右クリックで、終了。"
FOR i=0 TO 4
FOR j=1 TO V
LET w=i*V+j
IF w=m THEN PLOT AREA:j-1,i-5;j,i-5;j,i-6;j-1,i-6
IF wild$(w)="*.*" THEN LET w$=p$(w) ELSE LET w$=p$(w)& wild$(w)
PLOT TEXT,AT j-1+0.03,i-5 :w$ !p$(w)& wild$(w)
NEXT j
NEXT i
IF m>0 THEN LET n=files(p$(m)& wild$(m))
IF n>0 THEN file list p$(m)& wild$(m), names$
SET TEXT BACKGROUND "OPAQUE" !background color 0
FOR w=1 TO n
PLOT TEXT,AT IP((w-1)/27)+0.03, MOD((w-1),27)+1 :"|"& names$(w)
NEXT w
LET bak=0
END SUB
!-------------
SUB sampdisp
LET x=IP((bak-1)/27)
LET y=MOD((bak-1),27)
SET LINE COLOR 0
PLOT LINES:x,y; x+1-0.03,y; x+1-0.03,y+1; x,y+1; x,y
LET x=IP((b-1)/27)
LET y=MOD((b-1),27)
SET LINE COLOR 2
PLOT LINES:x,y; x+1-0.03,y; x+1-0.03,y+1; x,y+1; x,y
PRINT
PRINT "!*******************************"
PRINT "!"& p$(m)& names$(b)
PRINT "!*******************************"
WHEN EXCEPTION IN
OPEN #1: NAME p$(m)& names$(b),ACCESS INPUT
FOR L=1 TO 500 !最大 表示行数
LINE INPUT #1,IF MISSING THEN EXIT FOR :w$
FOR i=1 TO LEN(w$)
IF w$(i:i)< " " AND w$(i:i)<>CHR$(9) THEN CAUSE EXCEPTION 1
NEXT i
PRINT w$
NEXT L
USE
PRINT "******* テキストではない、表示の中止。"
END WHEN
CLOSE #1
LET bak=b
END SUB
END
|
|