home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / ktools / source / textread.pas < prev    next >
Pascal/Delphi Source File  |  1994-11-12  |  6KB  |  253 lines

  1. Program TextRead;
  2. { lecture de fichiers textes; utilisation de l'objet TTextFile et des
  3.   unités de fenêtrage }
  4. { K.B. mai-novembre 1994 }
  5.  
  6. {.$DEFINE debug}
  7.  
  8. {$IFDEF debug}
  9.  {$A+,B-,D+,E-,F-,I+,L+,N-,R+,S+,V-,W+,X+}
  10. {$ELSE}
  11.  {$A+,B-,D-,E-,F-,I+,L-,N-,R-,S-,V-,W+,X+}
  12. {$ENDIF}
  13.  
  14. Uses Dos,
  15.      UImprim,UMem,UDrivers,
  16.      OGenView,OTxtView,OFileWin,ODialWin,OHelpWin;
  17.  
  18. Const
  19.  cmInit=$300;
  20.  cmOpen=$301;
  21.  cmCherche=$302;
  22.  cmDialCherche=$303;
  23.  cmChercheEncore=$304;
  24.  cmMenu=$305;
  25.  cmHelp=$306;
  26.  cmImprimer=$307;
  27.  cmAbout=$308;
  28.  
  29. Type
  30.  
  31.  PTextReadApp=^TTextReadApp;
  32.  TTextReadApp=object(TTextApp)
  33.   SearchText:String[80];
  34.   Constructor Init;
  35.   Procedure InitStatusLine;virtual;
  36.   Procedure HandleEvent(Var Event:TEvent);virtual;
  37.   Procedure MakeTextWin(S:PathStr);
  38.   Function  FindTextWin : PFileWin;
  39.   Function InitMenu:PMenuWin;
  40.   End;
  41.  
  42. Var MonApp:PTextReadApp;
  43.  
  44. { objet TTextApp }
  45.  
  46. Constructor TTextReadApp.Init;
  47. Var S:String;
  48. Begin
  49.  TTextApp.Init;
  50.  Titre:='Afficheur de fichiers ASCII (KB juin 1994)';
  51.  SearchText:='';
  52.  if paramcount>0
  53.     then SetCommand(cmInit);
  54. End;
  55.  
  56. Procedure TTextReadApp.InitStatusLine;
  57. Begin
  58.  StatusLine:=New(PStatusLine,Init);
  59.  with StatusLine^ do
  60.   begin
  61.    AjouterItem('F1 Aide',F1);
  62.    AjouterItem('F2 Fichier',F2);
  63.    AjouterItem('F10 Menu',F10);
  64.    AjouterItem('AltX Quitter',AltX);
  65.   end;
  66. End;
  67.  
  68. Function TTextReadApp.InitMenu:PMenuWin;
  69. Var MenuWin:PMenuWin;
  70. Begin
  71.  MenuWin:=New(PMenuWin,Init(10,4));
  72.  MenuWin^.Ident:='MENU';
  73.  if MenuWin^.IsValid
  74.     then begin
  75.           with MenuWin^ do
  76.            begin
  77.             AjouterItem('Fichier...        ',cmOpen);
  78.             AjouterItem('Aide...           ',cmHelp);
  79.             AjouterItem('Imprimer          ',cmImprimer);
  80.             AjouterItem('Chercher...     F3',cmDialCherche);
  81.             AjouterItem('Chercher encore F4',cmCherche);
  82.             AjouterItem('A Propos...       ',cmAbout);
  83.             AjouterItem('Quitter       AltX',cmQuit);
  84.            end;
  85.           InitMenu:=MenuWin;
  86.          end
  87.     else begin
  88.           Message(MenuWin^.GetErrorMsg);
  89.           dispose(MenuWin,Done);
  90.           InitMenu:=nil;
  91.          end;
  92. End;
  93.  
  94. Procedure TTextReadApp.HandleEvent(Var Event:TEvent);
  95. Var S : String;
  96.     W : PMenuWin;
  97.     H : PHelpWin;
  98.     CurTextWin : PFileWin;
  99. Begin
  100.  TTextApp.HandleEvent(Event);
  101.  case Event.What of
  102.   evCommand:
  103.    case Event.Command of
  104.     cmInit:
  105.       begin
  106.        S:=ParamStr(1);
  107.        MakeTextWin(S);
  108.       end;
  109.     cmOpen:
  110.       begin
  111.        S:=GetFile('*.*');
  112.        if S<>''
  113.           then begin
  114.                 ClearDeskTop;
  115.                 MakeTextWin(S);
  116.                end;
  117.       end;
  118.     cmMenu:
  119.       begin
  120.        W:=InitMenu;
  121.        if W<>nil
  122.           then begin
  123.                 Insert(W);
  124.                 W^.Exec;
  125.                 dispose(W,Done);
  126.                end;
  127.       end;
  128.     cmHelp:
  129.       begin
  130.        H:=new(PHelpWin,Init(AppPath+'textread.hlp'));
  131.        if H^.IsValid
  132.           then begin
  133.                 H^.Ident:='AIDE';
  134.                 Insert(H);
  135.                 H^.Exec;
  136.                 dispose(H,Done);
  137.                end
  138.           else begin
  139.                 Message(H^.GetErrorMsg);
  140.                 dispose(H,done);
  141.                end;
  142.       end;
  143.     cmAbout:
  144.       Message(chr(13)
  145.               +'     T E X T R E A D   V 1.1         '+chr(13)
  146.               +'         Kostrzewa Bruno             '+chr(13)
  147.               +'         (novembre 1994)             '+chr(13));
  148.     cmImprimer:
  149.       begin
  150.        CurTextWin:=FindTextWin;
  151.        if CurTextWin=nil
  152.           then Message(' Rien à imprimer !!! ')
  153.           else begin
  154.                 if not PrinterOK
  155.                    then Message(' Allumez l''imprimante, SVP... ');
  156.                 if not PrinterOK
  157.                    then Message(' Imprimante hors ligne. '+chr(13)+
  158.                                 '        Abandon.        ')
  159.                    else begin
  160.                          Patience('Impression en cours...');
  161.                          CurTextWin^.Imprime;
  162.                          FinPatience;
  163.                         end;
  164.                end;
  165.       end;
  166.     cmDialCherche:
  167.       begin
  168.        CurTextWin:=FindTextWin;
  169.        if CurTextWin=nil
  170.           then Message('Pas de texte pour chercher ! ')
  171.           else begin
  172.                 WinRead(SearchText,' Chercher ');
  173.                 if SearchText<>''
  174.                    then SetCommand(cmCherche);
  175.                end;
  176.       end;
  177.     cmCherche:
  178.       begin
  179.        CurTextWin:=FindTextWin;
  180.        if CurTextWin<>nil
  181.           then begin
  182.                 if SearchText<>''
  183.                    then begin
  184.                          Patience('Recherche de '+SearchText+' en cours...');
  185.                          if not CurTextWin^.Trouve(SearchText)
  186.                             then Message(' Recherche terminée. ')
  187.                             else CurTextWin^.DrawInterior;
  188.                          FinPatience;
  189.                         end
  190.                    else Message(' Pas de chaine à chercher ! ');
  191.                end
  192.           else Message(' Pas de texte pour chercher ! ');
  193.       end;
  194.      else exit;
  195.    end;
  196.   evKeyDown:
  197.    case Event.KeyCode of
  198.     AltI : SetCommand(cmImprimer);
  199.       F1 : SetCommand(cmHelp);
  200.       F2 : SetCommand(cmOpen);
  201.       F3 : SetCommand(cmDialCherche);
  202.       F4 : SetCommand(cmCherche);
  203.      F10 : SetCommand(cmMenu);
  204.      else exit;
  205.    end;
  206.   else exit;
  207.  end;
  208.  Event.What:=evNothing;
  209. End;
  210.  
  211. Procedure TTextReadApp.MakeTextWin(S:PathStr);
  212. Var W:PFileWin;
  213. Begin
  214.  if S=''
  215.     then exit;
  216.  Patience('Chargement en cours...');
  217.  W:=New(PFileWin,Init(1,2,77,20,S));
  218.  FinPatience;
  219.  if W^.IsValid
  220.     then begin
  221.           Insert(W);
  222.           W^.Show;
  223.          end
  224.     else begin
  225.           Message(W^.GetErrorMsg);
  226.           dispose(W,Done);
  227.          end;
  228. End;
  229.  
  230. Function TTextReadApp.FindTextWin : PFileWin;
  231. Var W : PGenView;
  232. Begin
  233.  W:=FindSelect;
  234.  if W<>nil
  235.     then if W^.Ident<>'TEXTWIN'
  236.             then W:=nil;
  237.  FindTextWin:=PFileWin(W);
  238. End;
  239.  
  240. BEGIN
  241.  {$ifdef debug}
  242.  initmem;
  243.  {$endif}
  244.  MonApp:=New(PTextReadApp,Init);
  245.  MonApp^.Exec;
  246.  dispose(MonApp,Done);
  247.  {$ifdef debug}
  248.  diagmem;
  249.  {$endif}
  250. END.
  251.  
  252. {                        Fin du fichier TEXTREAD.PAS                        }
  253.