[Back to DIRS SWAG index] [Back to Main SWAG index] [Original]
{
Well, here goes...a directory viewer, sorry it has no box but the
command that i used to create the box was from a Unit. Weel, the Program
is very "raw" but i think it's enough to give you an idea...
}
Program ListBox;
Uses
Crt, Dos;
Const
S = ' ';
Var
List : Array[1..150] of String[12];
AttrList : Array[1..150] of String[15];
Pos, First : Integer;
C : Char;
Cont : Integer;
DirInfo : SearchRec;
NumFiles : Integer;
begin
TextBackground(Black);
TextColor(LightGray);
ClrScr;
For Cont := 1 to 15 do
begin
List[Cont] := '';
AttrList[Cont] := '';
end;
NumFiles := 0;
FindFirst('C:\*.*', AnyFile, DirInfo);
While DosError = 0 do
begin
Inc(NumFiles, 1);
List[NumFiles] := Concat(DirInfo.Name,
Copy(S, 1, 12 - Length(DirInfo.Name)));
If (DirInfo.Attr = $10) Then
AttrList[NumFiles] := '<DIR>'
Else
Str(DirInfo.Size, AttrList[NumFiles]);
AttrList[NumFiles] := Concat(AttrList[NumFiles],
Copy(S, 1, 9 - Length(AttrList[NumFiles])));
FindNext(DirInfo);
end;
First := 1;
Pos := 1;
Repeat
For Cont := First To First + 15 do
begin
If (Cont - First + 1 = Pos) Then
begin
TextBackground(Blue);
TextColor(Yellow);
end
Else
begin
TextBackGround(Black);
TextColor(LightGray);
end;
GotoXY(30, Cont - First + 3);
Write(' ', List[Cont], ' ', AttrList[Cont]);
end;
C := ReadKey;
If (C = #72) Then
If (Pos > 1) Then
Dec(Pos, 1)
Else
If (First > 1) Then
Dec(First,1);
If (C = #80) Then
If (Pos < 15) Then
Inc(Pos, 1)
Else
If (First + 15 < NumFiles) Then
Inc(First,1);
Until (Ord(c) = 13);
end.
[Back to DIRS SWAG index] [Back to Main SWAG index] [Original]