Here's a basic file selector program in 15 lines.
Written in DBC, it also runs in DBPro, but for some reason the text seems to be wider than when it runs in DBC, so some files overspill the box. This doesn't happen in DBC.
As I was aiming to get the job done in the fewest number of lines possible, I didn't include a panel title or file filter. But, as there are 5 lines spare, it should be possible to add those and still stay within 20 lines as well as make it a function if required.
Dim HDFiles$(1000,1):Sync On:CLS 0:Sync Rate 0:X=Screen Width()/2-100:Y=Screen Height()/2-130:W=200:H=260:C1=16777215:C2=12632256:C3=3618615:Ink C3,0:Box X,Y,X+W,Y+H:Ink C1,0:Box X,Y,X+W-1,Y+H-1:Ink C2,0:Box X+1,Y+1,X+W-1,Y+H-1
Ink C1,0:Box X+5,Y+235,X+5+90,Y+253:Box X+105,Y+235,X+5+189,Y+253:Ink C3,0:Box X+6,Y+236,X+96,Y+253:Box X+106,Y+236,X+195,Y+253:Ink C2,0:Box X+6,Y+236,X+6+89,Y+252:Box X+106,Y+236,X+6+188,Y+252
Ink C3,0: Box X+5,Y+210,X+5+190,Y+228:Ink C1,0: Box X+6,Y+211,X+5+190,Y+228:Ink 0,0: Box X+6,Y+211,X+5+189,Y+227:Text X+40,Y+237,"OK":Text X+128, Y+237,"Cancel"
Set Text Opaque:Gosub Scan:Offset=0:Do:Mx=MouseX():My=MouseY():OldMz=Mz:Mz=MouseMoveZ():Mc=MouseClick():If My>Y+5 and My<Y+206 and Mc=1:OF=(My-Y-5)/16+1:If OF<=EList:OverFile=OF:Endif:Endif
If Mc=1 and HDFiles$(OverFile,1)="0":Ink 0,0:If OverFile<=12:Box X+6,Y+211,X+5+189,Y+227:Ink C1,0:Text X+6,Y+211,HDFiles$(OverFile+Offset,0):Endif:Endif
If Mc=1 and HDFiles$(OverFile,1)="1" Then CD HDFiles$(OverFile,0): Gosub Scan
If Mx>X+5 and Mx<X+96 and My>Y+236 and My<Y+253 and Mc=1 Then CLS:Ink C1,0:Print "Selected File: ";HDFiles$(OverFile+Offset,0): End
If Mx>X+106 and Mx<X+195 and My>Y+236 and My<Y+253 and Mc=1 Then CLS: Ink C1,0: Print "Cancelled!": End
If OldMz<>Mz:If Mz>OldMz:If Offset>0:Dec Offset:Endif:Endif:If Mz<OldMz:If Offset+12<FNum:Inc Offset:Endif:Endif:Gosub Update:Endif
Sync:Loop
Scan:
Perform Checklist For Files: Fnum=Checklist Quantity():Offset=0:For N=1 To Fnum: HDFiles$(N,0)=CheckList String$(N):HDFiles$(N,1)=Str$(CHECKLIST VALUE A(N)):Next N
If FNum<=12:EList=FNum:Else:EList=12:Endif:Gosub Update:Repeat:Until MouseClick()=0:Return
Update:
Ink 0,0:Box X+5,Y+5,X+5+190,Y+200+5:Ink C1,0:For N=0 To EList-1:D$=HDFiles$(N+Offset+1,0):If Len(D$)>20:D$=Left$(D$,20):Endif:If HDFiles$(N+1+Offset,1)="0":Text X+5,N*16+Y+5,D$:Else:Text X+5,N*16+Y+5,"<Dir> "+D$:Endif:Next N:Sync:Return
[Edit] Use the mouse wheel to scroll the filenames in the box when they don't all fit in.
TDK_Man