home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Pascal / BPASCAL.700 / D11 / DDOCDEMO.ZIP / TUTOR08A.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-10-01  |  5.6 KB  |  246 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Vision 2.0 Demo                        }
  4. {   Copyright (c) 1992 by Borland International  }
  5. {                                                }
  6. {************************************************}
  7.  
  8. program Tutor08a;
  9.  
  10. uses Memory, TutConst, Drivers, Objects, Views, Menus, App, Dialogs,
  11.   Editors, StdDlg;
  12.  
  13. type
  14.   POrderWindow = ^TOrderWindow;
  15.   TOrderWindow = object(TDialog)
  16.     constructor Init;
  17.   end;
  18.   TTutorApp = object(TApplication)
  19.     ClipboardWindow: PEditWindow;
  20.     OrderWindow: POrderWindow;
  21.     constructor Init;
  22.     destructor Done; virtual;
  23.     procedure DoAboutBox;
  24.     procedure HandleEvent(var Event: TEvent); virtual;
  25.     procedure InitMenuBar; virtual;
  26.     procedure InitStatusLine; virtual;
  27.     procedure LoadDesktop;
  28.     procedure NewWindow;
  29.     procedure OpenOrderWindow;
  30.     procedure OpenWindow;
  31.     procedure SaveDesktop;
  32.   end;
  33.  
  34. var
  35.   ResFile: TResourceFile;
  36.  
  37. procedure TutorStreamError(var S: TStream); far;
  38. var
  39.   ErrorMessage: String;
  40. begin
  41.   case S.Status of
  42.     stError: ErrorMessage := 'Stream access error';
  43.     stInitError: ErrorMessage := 'Cannot initialize stream';
  44.     stReadError: ErrorMessage := 'Read beyond end of stream';
  45.     stWriteError: ErrorMessage := 'Cannot expand stream';
  46.     stGetError: ErrorMessage := 'Unregistered type read from stream';
  47.     stPutError: ErrorMessage := 'Unregistered type written to stream';
  48.     end;
  49.   DoneVideo;
  50.   PrintStr('Error: ' + ErrorMessage);
  51.   Halt(S.Status);
  52. end;
  53.  
  54. constructor TOrderWindow.Init;
  55. var
  56.   R: TRect;
  57. begin
  58.   R.Assign(0, 0, 60, 17);
  59.   inherited Init(R, 'Orders');
  60.   Options := Options or ofCentered;
  61.   HelpCtx := $F000;
  62. end;
  63.  
  64. constructor TTutorApp.Init;
  65. var
  66.   R: TRect;
  67. begin
  68.   MaxHeapSize := 8192;
  69.   EditorDialog := StdEditorDialog;
  70.   StreamError := @TutorStreamError;
  71.   RegisterMenus;
  72.   RegisterObjects;
  73.   RegisterViews;
  74.   RegisterApp;
  75.   RegisterEditors;
  76.   RegisterDialogs;
  77.   ResFile.Init(New(PBufStream, Init('TUTORIAL.TVR', stOpenRead, 1024)));
  78.   inherited Init;
  79.   DisableCommands([cmStockWin, cmSupplierWin]);
  80.   Desktop^.GetExtent(R);
  81.   ClipboardWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  82.   if ValidView(ClipboardWindow) <> nil then
  83.   begin
  84.     ClipboardWindow^.Hide;
  85.     InsertWindow(ClipboardWindow);
  86.     Clipboard := ClipboardWindow^.Editor;
  87.     Clipboard^.CanUndo := False;
  88.   end;
  89. end;
  90.  
  91. destructor TTutorApp.Done;
  92. begin
  93.   ResFile.Done;
  94.   inherited Done;
  95. end;
  96.  
  97. procedure TTutorApp.DoAboutBox;
  98. begin
  99.   ExecuteDialog(PDialog(ResFile.Get('ABOUTBOX')), nil);
  100. end;
  101.  
  102. procedure TTutorApp.HandleEvent(var Event: TEvent);
  103. var
  104.   R: TRect;
  105. begin
  106.   inherited HandleEvent(Event);
  107.   if Event.What = evCommand then
  108.   begin
  109.     case Event.Command of
  110.       cmOrderWin:
  111.         begin
  112.           OpenOrderWindow;
  113.           ClearEvent(Event);
  114.         end;
  115.       cmOptionsLoad:
  116.         begin
  117.           LoadDesktop;
  118.           ClearEvent(Event);
  119.         end;
  120.       cmOptionsSave:
  121.         begin
  122.           SaveDesktop;
  123.           ClearEvent(Event);
  124.         end;
  125.       cmClipShow:
  126.         with ClipboardWindow^ do
  127.         begin
  128.           Select;
  129.           Show;
  130.           ClearEvent(Event);
  131.         end;
  132.       cmNew:
  133.         begin
  134.           NewWindow;
  135.           ClearEvent(Event);
  136.         end;
  137.       cmOpen:
  138.         begin
  139.           OpenWindow;
  140.           ClearEvent(Event);
  141.         end;
  142.       cmOptionsVideo:
  143.         begin
  144.           SetScreenMode(ScreenMode xor smFont8x8);
  145.           ClearEvent(Event);
  146.         end;
  147.       cmAbout:
  148.         begin
  149.           DoAboutBox;
  150.           ClearEvent(Event);
  151.         end;
  152.     end;
  153.   end;
  154. end;
  155.  
  156. procedure TTutorApp.InitMenuBar;
  157. begin
  158.   MenuBar := PMenuBar(ResFile.Get('MAINMENU'));
  159. end;
  160.  
  161. procedure TTutorApp.InitStatusLine;
  162. var
  163.   R: TRect;
  164. begin
  165.   StatusLine := PStatusLine(ResFile.Get('STATUS'));
  166.   GetExtent(R);
  167.   StatusLine^.MoveTo(0, R.B.Y - 1);
  168. end;
  169.  
  170. procedure TTutorApp.LoadDesktop;
  171. var
  172.   DesktopFile: TBufStream;
  173.   TempDesktop: PDesktop;
  174.   R: TRect;
  175. begin
  176.   DesktopFile.Init('DESKTOP.TUT', stOpenRead, 1024);
  177.   TempDesktop := PDesktop(DesktopFile.Get);
  178.   DesktopFile.Done;
  179.   if ValidView(TempDesktop) <> nil then
  180.   begin
  181.     Desktop^.Delete(ClipboardWindow);
  182.     Delete(Desktop);
  183.     Dispose(Desktop, Done);
  184.     Desktop := TempDesktop;
  185.     Insert(Desktop);
  186.     GetExtent(R);
  187.     R.Grow(0, -1);
  188.     Desktop^.Locate(R);
  189.     InsertWindow(ClipboardWindow);
  190.   end;
  191. end;
  192.  
  193. procedure TTutorApp.NewWindow;
  194. var
  195.   R: TRect;
  196.   TheWindow: PEditWindow;
  197. begin
  198.   R.Assign(0, 0, 60, 20);
  199.   TheWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  200.   InsertWindow(TheWindow);
  201. end;
  202.  
  203. procedure TTutorApp.OpenOrderWindow;
  204. begin
  205.   OrderWindow := New(POrderWindow, Init);
  206.   InsertWindow(OrderWindow);
  207. end;
  208.  
  209. procedure TTutorApp.OpenWindow;
  210. var
  211.   R: TRect;
  212.   FileDialog: PFileDialog;
  213.   TheFile: FNameStr;
  214. const
  215.   FDOptions: Word = fdOKButton or fdOpenButton;
  216. begin
  217.   TheFile := '*.*';
  218.   New(FileDialog, Init(TheFile, 'Open file', '~F~ile name',
  219.     FDOptions, 1));
  220.   if ExecuteDialog(FileDialog, @TheFile) <> cmCancel then
  221.   begin
  222.     R.Assign(0, 0, 75, 20);
  223.     InsertWindow(New(PEditWindow, Init(R, TheFile, wnNoNumber)));
  224.   end;
  225. end;
  226.  
  227. procedure TTutorApp.SaveDesktop;
  228. var
  229.   DesktopFile: TBufStream;
  230. begin
  231.   Desktop^.Delete(ClipboardWindow);
  232.   DesktopFile.Init('DESKTOP.TUT', stCreate, 1024);
  233.   DesktopFile.Put(Desktop);
  234.   DesktopFile.Done;
  235.   InsertWindow(ClipboardWindow);
  236. end;
  237.  
  238. var
  239.   TutorApp: TTutorApp;
  240.  
  241. begin
  242.   TutorApp.Init;
  243.   TutorApp.Run;
  244.   TutorApp.Done;
  245. end.
  246.