home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / COMPUSCI / TOT11.ZIP / TOTDOC11.ZIP / CHAPT10.TXT < prev    next >
Text File  |  1991-02-11  |  28KB  |  723 lines

  1.                                                                       Displaying
  2.                                                                      Directories
  3.  
  4.  
  5.  
  6.          "An intellectual is someone who can listen to the William Tell overture
  7.          and not think of the Lone Ranger."
  8.  
  9.                                                                        Anonymous
  10.  
  11.  
  12.  
  13.          The Toolkit includes two entirely different object families for dis-
  14.          playing directory listings. The objects ListDirOBJ and ListDirSortOBJ
  15.          are descendant from ListOBJ and should be used when you want to display
  16.          the directory in a stretchable window, or let the user select multiple
  17.          files. The DirWinOBJ should be used when you want to display a file
  18.          selection dialog box and allow the user to choose a single file.
  19.  
  20.  
  21. Displaying Directory List Windows
  22.  
  23.          The totLIST unit includes the ListDirOBJ object which is an adaptation
  24.          of ListOBJ. ListDirOBJ is designed to display files and directories in
  25.          a stretchable window. ListDirOBJ is a descendant of ListOBJ, and inher-
  26.          its all the following ListOBJ methods:
  27.                     Init
  28.                     SetTopPick
  29.                     SetActivePick
  30.                     SetTagging
  31.                     SetColWidth
  32.                     Show
  33.                     Go
  34.                     LastKey
  35.                     GetHiString
  36.                     Win^
  37.                     Done
  38.  
  39.          Some of the list defaults are influenced by LookTOT^ methods. Refer
  40.          back to page 9-20 for a full description of these methods.
  41.          In addition to the inherited methods, ListDirOBJ includes the following
  42.          important method:
  43.  
  44.  
  45.          ReadFiles(Filemasks:string; FileAttrib:word);
  46.          This method must be called before the Go method. ReadFiles instructs
  47.          the object to read all the files matching the first parameter. The
  48.          filemask should include wild cards, e.g. *.pas, *.*, bob?.tit, etc.,
  49.          and may optionally include a drive and path. If a drive/path is not
  50.          specified, all matching files in the default directory will be read.
  51.          Note that the string may include more than one file specification sepa-
  52.          rated by spaces, e.g. '*.pas *.asm'. The second parameter identifies
  53.          the attributes of the files to include in the list.
  54.  
  55. 10-2                                                                User's Guide
  56. --------------------------------------------------------------------------------
  57.  
  58.          The Turbo Pascal DOS unit includes the following file attribute con-
  59.          stants:
  60.  
  61.                     ReadOnly        = $01
  62.                     Hidden          = $02
  63.                     SysFile         = $04
  64.                     VolumeID        = $08
  65.                     Directory       = $10
  66.                     Archive         = $20
  67.                     AnyFile         = $3F
  68.          Specify any of the desired file types by summing these constants and
  69.          passing them as the second parameter. For example, the following method
  70.          call will list all the .TXT files that can be edited:
  71.  
  72.                   ReadFiles('*.TXT',Anyfile-ReadOnly-Hidden);
  73.          Note that the Toolkit automatically removes the VolumeID file from the
  74.          list.
  75.  
  76.          In summary, to display a basic file listing, all you have to do is
  77.          declare an instance of ListDirOBJ, and then call the methods Init,
  78.          ReadFiles and Go. The chosen file can be determined by calling the
  79.          function method GetHiString. Listed below is the demo file DEMDR1.PAS
  80.          which displays a simple directory, followed by figure 10.1 showing the
  81.          resultant list.
  82.  
  83.  
  84.          program DemoDirectoryOne;
  85.          {demdr1 - the default directory list}
  86.          Uses DOS, CRT,
  87.               totFAST, totLIST;
  88.  
  89.          Var
  90.             ListWin:  ListDirObj;
  91.          begin
  92.             Screen.Clear(white,'░'); {paint the screen}
  93.             with ListWin do
  94.             begin
  95.                Init;
  96.                ReadFiles('*.*',AnyFile);
  97.                Go;
  98.                Win^.Remove;
  99.                if (LastKey = 27) or (Lastkey = 600) then
  100.                   writeln('You escaped!')
  101.                Else
  102.                   writeln('You chose file '+GetHiString);
  103.                Done;
  104.             end;
  105.          end.
  106.  
  107.  
  108.  
  109.  
  110. Displaying Directories                                                      10-3
  111. --------------------------------------------------------------------------------
  112.  
  113. Figure 10.1                                                             [SCREEN]
  114. A Basic Directory
  115. List
  116.  
  117.  
  118. Determining Tagged Files
  119.  
  120.          By default, the user can select multiple files by hitting the [KEYCAP]
  121.          or clicking the left mouse button on a filename. The method SetTagging
  122.          can be used to enable or disable multiple file tagging.
  123.          The ListDirOBJ object implements the methods GetStatus and SetStatus to
  124.          provide access to tagged files. These methods work in precisely the
  125.          same way as their namesakes in the DLLOBJ family. Full descriptions can
  126.          be found on page 9-27, but in brief, GetStatus returns a boolean to
  127.          indicate whether the file has been tagged, and is passed two parame-
  128.          ters; the first parameter is the number of the file in the list, and
  129.          the second is the flag ID which should be set to 0 (zero) to check the
  130.          status of the tag flag.
  131.  
  132.          Each ListDirOBJ instance includes a FileDLLOBJ object which is a linked
  133.          list holding all the file details. The ListDirOBJ object provides the
  134.          method FileList which returns a pointer to the FileDLLOBJ list. This is
  135.          useful when you want to directly manipulate the file linked list. You
  136.          may recall that all DLLOBJ objects have a method TotalNodes which
  137.          returns a longint identifying the number of entries in the list. The
  138.          ListDirOBJ method FileList^.TotalNodes therefore returns the total num-
  139.          ber of files in the list.
  140.          The demo program DEMDR2.PAS, listed below, shows how the methods GetS-
  141.          tatus and FileList^.TotalFiles can be used to ascertain which files the
  142.          user tagged. Notice that you must access the tagged files before
  143.          calling the method Done - otherwise, the list will be disposed of
  144.          before you can access it! Following the listing are figures 10.2 and
  145.          10.3 which provide an example of the output generated by the program.
  146.          Note that the highlighted file will only be included in the list if the
  147.          file is tagged.
  148.  
  149.          program DemoDirectoryTwo;
  150.          {demdr2 - determining chosen files}
  151.          Uses DOS, CRT,
  152.               totFAST, totLIST;
  153.  
  154.          Var
  155.             ListWin:  ListDirObj;
  156.             Tot,L:longint;
  157.          begin
  158.             Screen.Clear(white,'░'); {paint the screen}
  159.             with ListWin do
  160.             begin
  161.  
  162.  
  163.  
  164.  
  165. 10-4                                                                User's Guide
  166. --------------------------------------------------------------------------------
  167.  
  168.                Init;
  169.                ReadFiles('*.*',AnyFile);
  170.                Go;
  171.                Win^.Remove;
  172.                if (LastKey = 27) or (Lastkey = 600) then
  173.                   writeln('You escaped!')
  174.                Else
  175.                begin
  176.                   writeln('The highlighted file was '+GetHiString);
  177.                   writeln('The tagged files were: ');
  178.                   Tot := FileList^.TotalNodes;
  179.                   for L := 1 to Tot do
  180.                       if GetStatus(L,0) then
  181.                          writeln(GetString(L,0,0));
  182.                end;
  183.                Done;
  184.             end;
  185.          end.
  186.  
  187.  
  188.  
  189. Figure 10.2                                                             [SCREEN]
  190. Tagging Multiple
  191. Files
  192.  
  193. Figure 10.3                                                             [SCREEN]
  194. Di