home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9303 / pastrick / spooltst.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-06-01  |  4.3 KB  |  158 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      SPOOLTST.PAS                      *)
  3. (*          Drucker-Spooler für Turbo-Vision              *)
  4. (*         (c) 1993 Jochen Schäfer & DMV-Verlag           *)
  5. (* ------------------------------------------------------ *)
  6. PROGRAM SpoolTest;
  7. {$O-,R-,S-,X-,G-,D-}
  8.  
  9. USES Objects, App, Drivers, Views, Menus, StdDlg, Dos,
  10.      Spooler;
  11.  
  12. CONST
  13.   cmSpooler = 100;
  14.   cmAktiv   = 101;
  15.   cmPassiv  = 102;
  16.   cmDelete  = 103;
  17.   cmList    = 104;
  18.  
  19. TYPE
  20.   pMainApp = ^tMainApp;
  21.   tMainApp = OBJECT (tApplication)
  22.     CONSTRUCTOR Init;
  23.     DESTRUCTOR  Done;                            VIRTUAL;
  24.     PROCEDURE   HandleEvent(VAR Event : tEvent); VIRTUAL;
  25.     PROCEDURE   InitMenuBar;                     VIRTUAL;
  26.     PROCEDURE   InitStatusLine;                  VIRTUAL;
  27.     PROCEDURE   Idle;                            VIRTUAL;
  28.   END;
  29.  
  30. VAR
  31.   MainProc     : tMainApp;
  32.   Drucker      : PSpooler;
  33.   Path_Spooler : ^PathStr;
  34.  
  35.   PROCEDURE FileOpen(VAR WildCard : PathStr);
  36.   VAR
  37.     D : pFileDialog;
  38.     x : INTEGER;
  39.   BEGIN
  40.     D := New(pFileDialog, Init(WildCard, 'Datei laden',
  41.              '~N~ame', fdOpenButton+fdHelpButton, 100));
  42.     D^.helpCtx := hcNoContext;
  43.     IF Application^.ValidView(D) <> NIL THEN BEGIN
  44.       x := Desktop^.ExecView(D);
  45.       IF x <> cmCancel THEN
  46.         D^.GetFileName(WildCard)
  47.       ELSE
  48.         WildCard := '';
  49.       Dispose(D, Done);
  50.     END;
  51.   END;
  52.  
  53.   CONSTRUCTOR tMainApp.Init;
  54.   BEGIN
  55.     tApplication.Init;
  56.     Drucker := New(pSpooler, Init(5, 'LPT1'));
  57.   END;
  58.  
  59.   DESTRUCTOR tMainApp.Done;
  60.   BEGIN
  61.     Dispose(Drucker, Done);
  62.     tApplication.Done;
  63.   END;
  64.  
  65.   PROCEDURE tMainApp.Idle;
  66.   BEGIN
  67.     tApplication.Idle;
  68.     IF Drucker^.Count > 0 THEN Drucker^.Update;
  69.       (* Wenn Dateien in Liste sind,
  70.           nächstes Zeichen drucken *)
  71.   END;
  72.  
  73.   PROCEDURE tMainApp.InitMenuBar;
  74.   VAR
  75.     R : tRect;
  76.   BEGIN
  77.     GetExtent(R);
  78.     R.B.Y := R.A.Y + 1;
  79.     MenuBar := New(pMenuBar, Init(R, NewMenu(
  80.       NewSubMenu('~D~rucken', hcNoContext, NewMenu(
  81.         NewItem('~S~pooler', 'F1', kbF1,
  82.                 cmSpooler, hcNoContext,
  83.         NewItem('Spooler ~a~ktivieren', 'F2', kbF2,
  84.                 cmAktiv, hcNoContext,
  85.         NewItem('Spooler ~d~eaktivieren', 'F3', kbF3,
  86.                 cmPassiv, hcNoContext,
  87.         NewItem('~F~ile löschen', 'F4', kbF4,
  88.                 cmDelete, hcNoContext,
  89.         NewItem('~L~iste drucken', 'F5', kbF5,
  90.                 cmList, hcNoContext,
  91.         NIL)))))),
  92.       NIL))));
  93.   END;
  94.  
  95.   PROCEDURE tMainApp.InitStatusLine;
  96.   VAR
  97.     R : tRect;
  98.   BEGIN
  99.     GetExtent(R);
  100.     R.A.Y := R.B.Y - 1;
  101.     StatusLine := New(pStatusLine, Init(R,
  102.       NewStatusDef(0, $FFFF,
  103.         NewStatusKey('F10 Menu', kbF10, cmMenu,
  104.         NewStatusKey('~ALT-X~ Exit', kbAltX, cmQuit,
  105.       NIL)),
  106.     NIL)));
  107.   END;
  108.  
  109.   PROCEDURE tMainApp.HandleEvent(VAR Event : tEvent);
  110.   VAR
  111.     Liste : pItemList;
  112.     i     : INTEGER;
  113.     Datei : Text;
  114.   BEGIN
  115.     tApplication.HandleEvent(Event);
  116.     IF Event.What = evCommand THEN BEGIN
  117.       CASE Event.Command OF
  118.         cmSpooler : BEGIN
  119.           New(Path_Spooler);   
  120.           Path_Spooler^ := '*.*';
  121.           FileOpen(Path_Spooler^);
  122.           IF Path_Spooler^ <> '' THEN
  123.             Drucker^.Insert(pString(Path_Spooler));
  124.         end;
  125.         cmAktiv   : Drucker^.Go;
  126.         cmPassiv  : Drucker^.Stop;
  127.         cmDelete  : BEGIN
  128.           New(Path_Spooler);
  129.           Path_Spooler^ := '*.*';
  130.           FileOpen(Path_Spooler^);
  131.           IF Path_Spooler^ <> '' THEN
  132.             Drucker^.Delete(pString(Path_Spooler));
  133.         END;
  134.         cmList    : BEGIN
  135.           New(Path_Spooler);
  136.           Path_Spooler^ := 'LISTE.DAT';
  137.           Assign(Datei, Path_Spooler^);
  138.           Rewrite(Datei);
  139.           Drucker^.GetItems(Liste);
  140.           FOR i := 0 TO Drucker^.Count-1 DO
  141.             WriteLn(Datei, String(Liste^[i]^));
  142.           Close(Datei);
  143.           Drucker^.Insert(pString(Path_Spooler));
  144.         END;
  145.       END;
  146.       ClearEvent(Event);
  147.     END;
  148.   END;
  149.  
  150. BEGIN
  151.   MainProc.Init;
  152.   MainProc.Run;
  153.   MainProc.Done;
  154. END.
  155. (* ------------------------------------------------------ *)
  156. (*                 Ende von SPOOLTST.PAS                  *)
  157.  
  158.