'-------------------------------------------------- ' schon designed fr ne Maus, hatte aber keine Lust an der ' Maus weiterzumachen. Kannst du ja bernehmen :) CLS DIM N%(16) DIM M$(25) 'Farbeinstellungen N%( 1)=11 ' šberschrift [aktuelles Verz] N%( 2)=15 ' Fensterrahmen Vordergrund [letzte zeile vg nach wahl] N%( 3)=15 ' Wahlbalken Vordergrund N%( 4)=4 ' Wahlbalken Hintergrund N%( 5)=1 ' Letzte Zeile Hintergrund [nach wahl] N%( 6)=0 ' Bildlaufleiste Vordergrund N%( 7)=15 ' Bildlaufleiste Hintergrund N%( 8)=7 ' Dateien in PickBox N%( 9)=1 ' Fensterfarbe N%(10)=14 ' Nicht belegt N%(11)=8 ' Nicht belegt N%(12)=8 ' Nicht belegt N%(13)=0 ' Nicht belegt N%(14)=10 ' Nicht belegt N%(15)=0 ' Letzte Zeile Hintergrund [vor wahl] N%(16)=3 ' Nicht belegt DISPLAYSEG&=&HB000 ' sogar Mono-Detect habe Monochrome%=1 ' ich eingebaut :)) IF (PEEK(&H410) AND &H30)<>&H30 THEN DISPLAYSEG&=&HB800 ' wird aber noch nicht Monochrome%=0 ' von den Farben her benutzt END IF MouseDriver%=0 DEF SEG=0 REG 1,0 CALL INTERRUPT &H33 X%=REG(1) IF X%=-1 THEN REG 1,36 CALL INTERRUPT &H33 X%=REG(3)/256 IF X%>0 THEN MouseDriver%=1 END IF DirSpec$="*.*" ' Sollte auf *.* bleiben, ansonsten ' werden keine Verzeichnisse gelesen CALL pickbox ' Dateiauswahl color 7,0 cls if len(ltrim$(rtrim$(FilN$)))=0 then print "Keine Datei gew„hlt." else print "Gew„hlte Datei: "FilN$ end if END SUB displaywindow SHARED L1%=0 IF L2%=0 THEN FOR X%=W%(1) TO W%(2) L%=LEN(M$(X%)) IF L%>L1% THEN L1%=L% NEXT L%=CEIL(L1%/2)*2 L2%=40-(L%/2) L2%=INT(L2%/2)*2 L3%=40+(L%/2) L3%=CEIL(L3%/2)*2 END IF COLOR N%(2),N%(9) IF GO% THEN COLOR N%(2),N%(5) IF RedBox% THEN COLOR N%(1),N%(4) L4%=L3%-L2%+1 LOCATE W%(1)-2,L2%,0,0,0 PRINT CHR$(22);STRING$(L4%,196);CHR$(183); LOCATE W%(1)-1,L2%:PRINT CHR$(179);SPC(L4%);CHR$(186); FOR X%=W%(1) TO W%(2) LOCATE X%,L2%:PRINT CHR$(179); LOCATE X%,L3%+2:PRINT CHR$(186); NEXT LOCATE W%(2)+1,L2%:PRINT CHR$(179);SPC(L4%);CHR$(186); LOCATE W%(2)+2,L2%:PRINT CHR$(212);STRING$(L4%,205);CHR$(188); IF Monochrome%=0 THEN DEF SEG=&HB800 IF W%(2)<22 THEN CursorLine%=(W%(2)+2)*160+(L2%*2)+2 X%=((L3%+2)-(L2%+2))*2+2 CursorLine$=PEEK$(CursorLine%,X%) FOR CursorRow%=2 TO X%+4 STEP 2 MID$(CursorLine$,CursorRow%,1)=CHR$(8) NEXT POKE$ CursorLine%,CursorLine$ END IF IF L3%<77 THEN BottomLimit%=W%(2)+2 IF BottomLimit%=24 THEN DECR BottomLimit% FOR CursorLine%=W%(1)-2 TO BottomLimit% CursorRow%=(CursorLine%*160)+(L3%*2)+4 CursorLine$=PEEK$(CursorRow%,4) FOR X%=2 TO 4 STEP 2 MID$(CursorLine$,X%,1)=CHR$(8) NEXT POKE$ CursorRow%,CursorLine$ NEXT END IF DEF SEG=0 END IF COLOR N%(8),N%(9) IF RedBox% THEN COLOR N%(2),N%(4) IF GO% THEN COLOR N%(1),N%(5) FOR X%=W%(1) TO W%(2) LOCATE X%,L2%+1 PRINT " ";M$(X%);SPACE$(L4%-LEN(M$(X%))-1);:NEXT RedBox%=0 GO%=0 ERASE M$ END SUB SUB getuserinput SHARED DO MPTR%=0 IF MouseDriver% THEN clickagain: OneShot%=1 IF NowPressed%>0 THEN IF (FileList% AND ((ML%=8 OR ML%=20) AND MC%=72))_ OR (Browsing% AND (ML%=3 OR ML%=22) AND MC%=79) THEN DELAY .08 OneShot%=0 END IF END IF REG 1,3 CALL INTERRUPT &H33 BUTTON%=REG(2) MC%=(REG(3)/8)+1 ML%=(REG(4)/8)+1 IF BUTTON% THEN NowPressed%=1 ' Esc IF BUTTON%=2 OR (BUTTON%=1 AND ((ML%=W%(1)-2 OR ML%=W%(1)-1) AND MC%=L2%) OR (ML%=2 AND MC%=1)) THEN A$=CHR$(27) ELSEIF FileList% THEN IF MC%=72 AND ML%>6 AND ML%<22 THEN IF ML%=7 THEN A$=CHR$(0)+CHR$(73) IF ML%=21 THEN A$=CHR$(0)+CHR$(81) IF ML%=8 THEN A$=CHR$(0)+CHR$(72) IF ML%=20 THEN A$=CHR$(0)+CHR$(80) IF ML%>8 AND ML%<20 THEN First%=(ML%-9)*(Elements%/11) Choice%=First% A$=" " END IF ELSEIF ML%>7 AND ML%<22 AND MC%>10 AND MC%<70 THEN A$=" " MPTR%=1 END IF ELSEIF Browsing% AND MC%=79 THEN IF ML%=2 THEN A$=CHR$(0)+CHR$(73) IF ML%=3 THEN A$=CHR$(0)+CHR$(72) IF ML%=22 THEN A$=CHR$(0)+CHR$(80) IF ML%=23 THEN A$=CHR$(0)+CHR$(81) IF ML%>3 AND ML%<22 THEN MPTR%=1 A$=" " END IF END IF ELSE A$="" END IF END IF ' Tasteneingabe IF A$="" THEN A$=INKEY$ END IF IF A$<>"" THEN I%=ASCII(RIGHT$(A$,1)) J%=ASCII(LEFT$(A$,1)) AA$=UCASE$(A$) END IF BK%=0 IF I%=27 OR I%=21 THEN BK%=1 IF A$<>"" THEN EXIT LOOP END IF LOOP SV%=0:UP%=0:DN%=0:LT%=0:RT%=0:PU%=0:PD%=0:HM%=0:EN%=0 F2%=0:F10%=0:ALTF2%=0 IF I%=13 THEN SV%=1 IF J%=0 THEN IF I%=60 THEN F2%=1 IF I%=68 THEN F10%=1 IF I%=72 THEN UP%=1 IF I%=75 THEN LT%=1 IF I%=77 THEN RT%=1 IF I%=80 THEN DN%=1 IF I%=73 THEN PU%=1 IF I%=81 THEN PD%=1 IF I%=71 THEN HM%=1 IF I%=79 THEN EN%=1 IF I%=105 THEN ALTF2%=1 END IF END SUB SUB pickbox SHARED ColString$="" for x%=1 to 256:ColString$=ColString$+CHR$(X%-1):NEXT MID$(ColString$,92,1)=CHR$(33) MID$(ColString$,93,1)=CHR$(34) OrigDir$=CURDIR$ OrigDrv$=MID$(CURDIR$,1,2) GetDrive%=1 ' Aktuelles Verzeichnis/Laufwerk prfen ' chkdrv: CALL showbox X%=ERRTEST ON ERROR RESUME NEXT DspDir$=CURDIR$ IF ERRTEST THEN ERASE M$ M$(14)=" Auf dieses Laufwerk kann nicht zugriffen werden! " W%(1)=14 W%(2)=14 L2%=0 RedBox%=1 CALL displaywindow DELAY 2 CHDRIVE OrigDrv$ CHDIR OrigDir$ DspDir$=CURDIR$ CALL showbox END IF ON ERROR GOTO 0 TotFiles%=0 A$=DIR$(DirSpec$,16) WHILE A$<>"" IF INSTR(A$,".OVL")=0 THEN INCR TotFiles% END IF A$=DIR$ WEND DIM DYNAMIC PickList$(TotFiles%+2) A$=DIR$(DirSpec$,16) X%=0 WHILE A$<>"" IF INSTR(A$,".OVL")=0 THEN IF A$<>"" AND A$<>"\" THEN A%=ATTRIB(A$) IF BIT(A%,4)=1 THEN ' A%=16 A$="\"+A$ END IF END IF INCR X% PickList$(X%)=A$ END IF A$=DIR$ WEND ARRAY INSERT PickList$() PickList$(1)="[..]" INCR TotFiles% startagain: Elements%=UBOUND(PickList$(1)) FOR X%=Elements% TO 1 STEP -1 IF LTRIM$(RTRIM$(PickList$(X%)))<>"" THEN Elements%=X%:EXIT FOR NEXT IF GetDrive%=0 THEN INCR Elements% END IF GetDrive%=1 IF Elements%>TotFiles%+1 THEN Elements%=TotFiles%+1 AM$=SPACE$(Elements%) ARRAY SORT PickList$() FOR Elements%+1,COLLATE ColString$ WHILE PickList$(1)="" ARRAY DELETE PickList$(1) WEND First%=1 Choice%=1 ChoiceLine%=8 IF MaxFirst%<1 THEN MaxFirst%=1 contloop: CALL showcurdir WHILE -1 CALL showpicklist IF QuickView%=0 THEN FileList%=1 CALL getuserinput FileList%=0 ELSE SV%=1 END IF ' Exit oder Select IF BK% OR SV% THEN IF BK% THEN CHDRIVE OrigDrv$ CHDIR OrigDir$ END IF EXIT LOOP ' Cursor Rechts ELSEIF RT% THEN INCR Choice% IF (Choice% MOD 4)=1 THEN INCR ChoiceLine% END IF ' Cursor Links ELSEIF LT% THEN DECR Choice% IF (Choice% MOD 4)=0 THEN DECR ChoiceLine% END IF ' Cursor Hoch ELSEIF UP% THEN DECR Choice%,4 DECR ChoiceLine% ' Cursor Runter ELSEIF DN% THEN INCR Choice%,4 INCR ChoiceLine% ' Bild runter ELSEIF PD% THEN FOR X%=1 TO 14 INCR Choice%,4 INCR First%,4 IF First%>Elements% OR Choice%>Elements% THEN DECR First%,4 DECR Choice%,4 EXIT FOR END IF NEXT ' Bild rauf ELSEIF PU% THEN DECR Choice%,56 DECR First%,56 ' Pos1 ELSEIF HM% THEN Choice%=1 First%=1 ChoiceLine%=8 ' Ende ELSEIF EN% THEN Choice%=Elements% FOR X%=1 TO Elements%/4 INCR First%,4 IF First%>Elements% THEN DECR First%,52 EXIT FOR END IF NEXT END IF WEND ' ENTER IF SV% THEN ' Laufwerkswechsel IF LEN(PickList$(Choice%))=3 AND MID$(PickList$(Choice%),2,2)=":\" THEN ON ERROR RESUME NEXT CHDRIVE MID$(PickList$(Choice%),1,2) ON ERROR GOTO 0 ERASE PickList$ GOTO chkdrv ' gltige Laufwerke ermitteln ELSEIF LEN(CURDIR$)=3 AND PickList$(Choice%)="[..]" THEN CALL showbox DIM Drv%(1:26) Drv%(1)=1 DEF SEG=0 X%=PEEK(&H410) A$=BIN$(X%) L%=LEN(A$) IF L%<8 THEN A$=STRING$(8-L%,"0")+A$ IF LEFT$(A$,2)="00" THEN TotFiles%=1 ELSE TotFiles%=2 Drv%(2)=1 END IF FOR X%=67 TO 90 Y%=ERRTEST ON ERROR RESUME NEXT OPEN "O",#1,CHR$(X%)+":$TEST$" CLOSE #1 IF ERRTEST=0 THEN INCR TotFiles% Drv%(X%-64)=1 KILL CHR$(X%)+":$TEST$" END IF ON ERROR GOTO 0 NEXT ERASE PickList$ DIM PickList$(1:TotFiles%+2) Y%=0 FOR X%=1 TO 26 IF Drv%(X%) THEN INCR Y% PickList$(Y%)=CHR$(X%+64)+":\" END IF NEXT GetDrive%=1 GOTO startagain ' Verzeichnis hoch ELSEIF PickList$(Choice%)="[..]" THEN X%=ERRTEST ON ERROR RESUME NEXT CHDIR ".." IF ERRTEST THEN CHDIR OrigDir$ END IF ON ERROR GOTO 0 ERASE PickList$ GOTO chkdrv ' Verzeichnis runter ELSEIF INSTR(PickList$(Choice%),"\")=1 THEN A$=CURDIR$+PickList$(Choice%) REPLACE "\\" WITH "\" IN A$ CHDIR A$ ERASE PickList$ GOTO chkdrv ELSE '-------------------------------------------------------- ' --------- FERTIG ! BrowseFile$=PickList$(Choice%) if not right$(DspDir$,1)="\" then a$="\" else a$="" FilN$=DspDir$+a$+BrowseFile$ locate 25,1:print FilN$+(string$(80-len(FilN$),32)); EXIT SUB END IF END IF END SUB SUB showpicklist SHARED IF ChoiceLine%<8 THEN ChoiceLine%=8 DECR First%,4 END IF IF ChoiceLine%>21 THEN ChoiceLine%=21 INCR First%,4 END IF IF First%<1 THEN First%=1 IF First%>Elements% THEN First%=Elements% IF Choice%<1 THEN Choice%=1 IF Choice%>Elements% THEN Choice%=Elements% Z%=First% COLOR N%(8),N%(9) FOR X%=8 TO 21 A%=1 A$=SPACE$(59) FOR Y%=0 TO 3 IF Z%+Y%<=Elements% THEN MID$(A$,A%,15)=PickList$(Z%+Y%) INCR A%,15 END IF NEXT INCR Z%,4 LOCATE X%,12 PRINT " ";A$; NEXT Y%=8 Z%=0 FOR X%=First% TO First%+55 INCR Z% IF X%=Choice% THEN ChoiceLine%=Y% EXIT FOR END IF IF Z%=4 THEN Z%=0 INCR Y% END IF NEXT A$="" FOR X%=12 TO 70 A$=A$+CHR$(SCREEN(ChoiceLine%,X%)) NEXT X%=INSTR(A$,PickList$(Choice%)) COLOR N%(3),N%(4) LOCATE ChoiceLine%,X%+10 PRINT USING " \ \";PickList$(Choice%); COLOR N%(6),N%(7) LOCATE 8,72%:PRINT CHR$(24); FOR X%=9 TO 19:LOCATE X%,72:PRINT CHR$(176);:NEXT LOCATE 20,72:PRINT CHR$(25); A%=First%/(Elements%/11)+9 IF A%>19 THEN A%=19 COLOR N%(2),N%(5) LOCATE A%,72:PRINT CHR$(219); END SUB SUB showbox SHARED W%(1)=8 W%(2)=20 L2%=10 L3%=70 CALL displaywindow COLOR N%(8)+16,N%(9) LOCATE 6,36 PRINT " Lese ... "; END SUB SUB showcurdir SHARED COLOR N%(2),N%(9) LOCATE 6,35 PRINT STRING$(11,196); COLOR N%(1),N%(9) LOCATE 6,39-(LEN(DspDir$)/2) PRINT " ";DspDir$;" "; END SUB '--------------------------------------------------