home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / tvision / dosshell / dosshell.pas
Encoding:
Pascal/Delphi Source File  |  1993-04-28  |  2.5 KB  |  105 lines

  1. (* ------------------------------------------------------ *)
  2. (*                   DOSSHELL.PAS                         *)
  3. (*           (c) 1993 te-wi Verlag, München               *)
  4. (* ------------------------------------------------------ *)
  5. PROGRAM DOSShell;
  6.  
  7. USES Dos, Objects, Drivers, Views, Menus, MsgBox, Dialogs,
  8.      Memory, App;
  9.  
  10. CONST
  11.   cmAbout = 101;
  12.   cmTest  = 102;
  13.  
  14. (* --- Main Application Object -------------------------- *)
  15.  
  16. TYPE
  17.   tMyApp = OBJECT (tApplication)
  18.     PROCEDURE InitMenuBar; VIRTUAL;
  19.     PROCEDURE HandleEvent(VAR Event : tEvent); VIRTUAL;
  20.     PROCEDURE DoTest;
  21.     PROCEDURE ShutSystem(Video : BOOLEAN);
  22.     PROCEDURE ReInitSystem(Video : BOOLEAN);
  23.   END;
  24.  
  25.   PROCEDURE tMyApp.ShutSystem(Video : BOOLEAN);
  26.   BEGIN
  27.     DoneSysError;
  28.     DoneEvents;
  29.     IF Video THEN DoneVideo;
  30.     DoneDosMem;
  31.     SwapVectors;
  32.   END;
  33.  
  34.   PROCEDURE tMyApp.ReInitSystem(Video : BOOLEAN);
  35.   BEGIN
  36.     SwapVectors;
  37.     InitDosMem;
  38.     IF Video THEN InitVideo;
  39.     InitEvents;
  40.     InitSysError;
  41.     Redraw;
  42.   END;
  43.  
  44.   PROCEDURE tMyApp.DoTest;
  45.   VAR
  46.     Err : STRING;
  47.   BEGIN
  48.     ShutSystem(TRUE);
  49.     Exec('C:\BP\BIN\TASM.EXE', '');
  50.     ReInitSystem(TRUE);
  51.     IF DosError <> 0 THEN BEGIN
  52.       Str(DosError, Err);
  53.       MessageBox('Dos error #' + Err, NIL, mfError + mfOkButton);
  54.     END ELSE BEGIN
  55.       Str(DosExitCode, Err);
  56.       MessageBox('Child process exit code = ' + Err,
  57.                  NIL, mfInformation + mfOkButton);
  58.     END;
  59.   END;
  60.  
  61.   PROCEDURE tMyApp.InitMenuBar;
  62.   VAR
  63.     R : tRect;
  64.   BEGIN
  65.     GetExtent(R);
  66.     R.B.Y := R.A.Y + 1;
  67.     MenuBar := New(pMenuBar, Init(R, NewMenu(
  68.       NewSubMenu('~≡~', hcNoContext, NewMenu(
  69.         NewItem('~T~est', '', kbNoKey, cmTest, hcNoContext,
  70.         NewItem('~A~bout', '', kbNoKey, cmAbout, hcNoContext,
  71.         NIL))),
  72.       NIL))));
  73.   END;
  74.  
  75.   PROCEDURE tMyApp.HandleEvent(VAR Event : tEvent);
  76.   BEGIN
  77.     inherited HandleEvent(Event);
  78.  
  79.     IF Event.What = evCommand THEN BEGIN
  80.       CASE Event.Command OF
  81.         cmTest  : BEGIN
  82.                     DoTest;
  83.                   END;
  84.         cmAbout : BEGIN
  85.                     MessageBox(#3'Turbo Vision Application',
  86.                     NIL, mfInformation OR mfOkButton);
  87.                   END;
  88.       ELSE
  89.         Exit;
  90.       END;
  91.       ClearEvent(Event);
  92.     END;
  93.   END;
  94.  
  95. VAR
  96.   anApp : tMyApp;
  97.  
  98. BEGIN
  99.   anApp.Init;
  100.   anApp.Run;
  101.   anApp.Done;
  102. END.
  103. (* ------------------------------------------------------ *)
  104. (*                Ende von DOSSHELL.PAS                   *)
  105.