[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]