home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 15
/
CD_ASCQ_15_070894.iso
/
vrac
/
dnalib7a.zip
/
BROWSE.BAS
< prev
next >
Wrap
BASIC Source File
|
1994-05-14
|
6KB
|
204 lines
DECLARE SUB Popwind(Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%)
DECLARE SUB RestoreScreen(ScreenID$,TopRow%,LeftColumn%)
DECLARE SUB SaveScreen(ScreenID$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%)
DECLARE SUB SplitPath(FilePath$, Path$, FileName$)
DECLARE SUB CalcByte(Attr%,LowByte%,HiByte%)
DECLARE SUB Clicked(Rgt%,Lft%,Row%,Col%)
DECLARE SUB HideCursor()
DECLARE SUB ShowCursor()
DECLARE FUNCTION LeftButtonReleased%()
SUB BROWSE(FileName$,Mouse%,TextColor%,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Attr%,Shadow%,Border%) PUBLIC
$CODE SEG "DNASEG1"
CalcByte Attr%,FGround%,BGround%
LeftSide% = LeftColumn% + 2:RightSide% = RightColumn% - 2:Top% = TopRow% + 1
Bottom% = BottomRow% - 1:TextWidth% = RightSide% - (LeftSide% - 1):Pointer% = 1
Offset% = 0
Test$ = DIR$(FileName$)
IF Mouse% THEN HideCursor
IF LEN(Test$) THEN
SplitPath FileName$,Path$,Title$
FileNumber% = FREEFILE
OPEN FileName$ FOR BINARY AS FileNumber%
IF LOF(FileNumber%) > 32000 THEN
GET$ FileNumber%, 32000, FileName$
ELSE
GET$ FileNumber%, LOF(FileNumber%), FileName$
END IF
CLOSE FileNumber%
ELSE
EXIT SUB
END IF
REPLACE ANY CHR$(9) WITH CHR$(32) IN FileName$
FileName$ = RTRIM$(FileName$,CHR$(13,10))
FileName$ = FileName$ + " "
IF LEN(Title$) >= TextWidth% - 6 THEN
Title$ = ""
END IF
SaveScreen BrowseScreen$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%
Popwind Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%
IF Mouse% THEN
COLOR FGround%,BGround%
LOCATE BottomRow%,RightColumn% - 10
PRINT CHR$(91,17,32,30,32,31,32,16,93);
LOCATE TopRow%,LeftColumn% + 1
PRINT CHR$(91,254,93);
END IF
COLOR TextColor%,BGround%
DO
IF Mouse% THEN HideCursor
TempPointer% = Pointer%
Temp% = Top%
DO
EndOfLine% = INSTR(MID$(FileName$, TempPointer%),CHR$(13))
IF EndOfLine% = 0 THEN
EndOfLine% = LEN(FileName$)
ELSE
DECR EndOfLine%
END IF
CurrentLine$ = MID$(FileName$, TempPointer%, EndOfLine%)
LOCATE Temp%, LeftSide%
PRINT MID$(CurrentLine$ + SPACE$(TextWidth% + Offset%), 1 + Offset%, TextWidth%)
TempPointer% = INSTR(TempPointer%, FileName$, CHR$(13)) + 2 '+2 for CRLF pair
IF TempPointer% = 2 THEN TempPointer% = LEN(FileName$)
INCR Temp%
IF Temp% > Bottom% THEN EXIT LOOP
LOOP
WHILE NOT INSTAT
IF Mouse% THEN
ShowCursor
Rgt% = 0:Lft% = 0:MRow% = 0:MCol% = 0
Clicked Rgt%,Lft%,MRow%,MCol%
IF MRow% >= TopRow% AND MRow% <= BottomRow% AND MCol% >= LeftColumn% AND MCol% <= RightColumn% THEN
SELECT CASE MRow%
CASE TopRow%
IF MCol% = LeftColumn% + 2 THEN
IF LeftButtonReleased% THEN Chose% = 27: GOTO KeyBoardRoutine
END IF
CASE BottomRow%
SELECT CASE MCol%
CASE RightColumn% - 3
IF Lft% THEN Chose% = -77: GOTO KeyBoardRoutine
CASE RightColumn% - 5
IF Lft% THEN Chose% = -80: GOTO KeyBoardRoutine
CASE RightColumn% - 7
IF Lft% THEN Chose% = -72: GOTO KeyBoardRoutine
CASE RightColumn% - 9
IF Lft% THEN Chose% = -75: GOTO KeyBoardRoutine
END SELECT
END SELECT
ELSE
IF LeftButtonReleased% THEN Chose% = 27: GOTO KeyBoardRoutine
END IF
END IF
WEND
Ky$ = INKEY$
IF LEN(Ky$) = 1 THEN
Chose% = ASC(Ky$)
ELSE
Chose% = -ASC(RIGHT$(Ky$,1))
END IF
KeyBoardRoutine:
SELECT CASE Chose%
CASE -80 'down arrow
IF TempPointer% < LEN(FileName$) THEN
Pointer% = INSTR(Pointer%, FileName$, CHR$(13)) + 2
END IF
CASE -72 ' up arrow
IF Pointer% > 1 THEN
DECR Pointer%,2
DO
DECR Pointer%
LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
IF Pointer% > 1 THEN INCR Pointer%,2
END IF
CASE -71 ' home
IF Offset% THEN
Offset% = 0
ELSE
Pointer% = 1
END IF
CASE -77 ' right arrow
INCR Offset%
CASE -75 ' left arrow
IF Offset% THEN DECR Offset%
CASE -81 ' page down
FOR PageLenght% = Top% TO (Bottom% - 1)
Oldptr% = Pointer%
Pointer% = INSTR(Pointer%, FileName$, CHR$(13)) + 2
IF Pointer% = 2 THEN
Pointer% = Oldptr%
EXIT FOR
END IF
NEXT PageLenght%
CASE -73 ' page up
FOR PageLenght% = Top% TO (Bottom% - 1)
IF Pointer% > 1 THEN
DECR Pointer%,2
DO
DECR Pointer%
LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
IF Pointer% > 1 THEN INCR Pointer%,2
ELSE
EXIT FOR
END IF
NEXT PageLenght%
CASE -79 'EndKey
Pointer% = LEN(FileName$)
FOR PageLenght% = Top% TO (Bottom% - 1)
IF Pointer% > 1 THEN
DECR Pointer%,2
DO
DECR Pointer%
LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
IF Pointer% > 1 THEN INCR Pointer%,2
ELSE
EXIT FOR
END IF
NEXT PageLenght%
CASE 27
EXIT LOOP
CASE ELSE
BEEP
END SELECT
LOOP
IF Mouse% THEN HideCursor
RestoreScreen BrowseScreen$,TopRow%,LeftColumn%
END SUB