home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Pascal / TP.7_1 / TP / EXAMPLES / DOCDEMOS / ORDERS.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-10-05  |  5.3 KB  |  205 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Vision 2.0 Demo                        }
  4. {   Copyright (c) 1992 by Borland International  }
  5. {                                                }
  6. {************************************************}
  7.  
  8. unit Orders;
  9.  
  10. interface
  11.  
  12. uses TutConst, Drivers, Objects, TutTypes, Dialogs, Editors, Count;
  13.  
  14. type
  15.   POrderDialog = ^TOrderDialog;
  16.   TOrderDialog = object(TDialog)
  17.     OrderNum, QtyOrdered, StockNum, DateOrdered: PInputLine;
  18.     Memo: PMemo;
  19.     Received: PCheckBoxes;
  20.     PayMethod: PRadioButtons;
  21.     Counter: PCountView;
  22.     constructor Init;
  23.     constructor Load(var S: TStream);
  24.     destructor Done; virtual;
  25.     procedure HandleEvent(var Event: TEvent); virtual;
  26.     procedure Store(var S: TStream); virtual;
  27.     function Valid(Command: Word): Boolean; virtual;
  28.   end;
  29.  
  30. var
  31.   OrderColl: PCollection;
  32.   CurrentOrder: Integer;
  33.   OrderInfo: TOrder;
  34.   TempOrder: POrderObj;
  35.  
  36. procedure LoadOrders;
  37. procedure SaveOrders;
  38. procedure RegisterOrders;
  39.  
  40. const
  41.   ROrderDialog: TStreamRec = (
  42.     ObjType: 993;
  43.     VmtLink: Ofs(TypeOf(TOrderDialog)^);
  44.     Load: @TOrderDialog.Load;
  45.     Store: @TOrderDialog.Store
  46.   );
  47.  
  48.  
  49. implementation
  50.  
  51. uses Views, Validate, Stocks;
  52.  
  53. constructor TOrderDialog.Init;
  54. var
  55.   R: TRect;
  56.   ALabel: PLabel;
  57. begin
  58.   R.Assign(0, 0, 60, 17);
  59.   inherited Init(R, 'Orders');
  60.   Options := Options or ofCentered;
  61.   HelpCtx := $F000;
  62.  
  63.   R.Assign(13, 2, 23, 3);
  64.   OrderNum := New(PInputLine, Init(R, 8));
  65.   OrderNum^.SetValidator(New(PRangeValidator, Init(1, 99999)));
  66.   Insert(OrderNum);
  67.   R.Assign(2, 2, 12, 3);
  68.   Insert(New(PLabel, Init(R, '~O~rder #:', OrderNum)));
  69.  
  70.   R.Assign(43, 2, 53, 3);
  71.   DateOrdered := New(PInputLine, Init(R, 8));
  72.   DateOrdered^.SetValidator(New(PPXPictureValidator, Init('{#[#]}/{#[#]}/{##[##]}', True)));
  73.   Insert(DateOrdered);
  74.   R.Assign(26, 2, 41, 3);
  75.   Insert(New(PLabel, Init(R, '~D~ate of order:', DateOrdered)));
  76.  
  77.   R.Assign(13, 4, 23, 5);
  78.   StockNum := New(PInputLine, Init(R, 8));
  79.   StockNum^.SetValidator(New(PStockNumValidator, Init));
  80.   Insert(StockNum);
  81.   R.Assign(2, 4, 12, 5);
  82.   Insert(New(PLabel, Init(R, '~S~tock #:', StockNum)));
  83.  
  84.   R.Assign(46, 4, 53, 5);
  85.   QtyOrdered := New(PInputLine, Init(R, 5));
  86.   QtyOrdered^.SetValidator(New(PRangeValidator, Init(1, 99999)));
  87.   Insert(QtyOrdered);
  88.   R.Assign(26, 4, 44, 5);
  89.   Insert(New(PLabel, Init(R, '~Q~uantity ordered:', QtyOrdered)));
  90.  
  91.   R.Assign(3, 7, 57, 8);
  92.   PayMethod := New(PRadioButtons, Init(R,
  93.     NewSItem('Cash   ',
  94.     NewSItem('Check  ',
  95.     NewSItem('P.O.   ',
  96.     NewSItem('Account', nil))))));
  97.   Insert(PayMethod);
  98.   R.Assign(2, 6, 21, 7);
  99.   Insert(New(PLabel, Init(R, 'Method of ~p~ayment:', PayMethod)));
  100.  
  101.   R.Assign(22, 8, 37, 9);
  102.   Received := New(PCheckBoxes, Init(R, NewSItem('~R~eceived', nil)));
  103.   Insert(Received);
  104.  
  105.   R.Assign(3, 10, 57, 13);
  106.   Memo := New(PMemo, Init(R, nil, nil, nil, 255));
  107.   Insert(Memo);
  108.   R.Assign(2, 9, 9, 10);
  109.   Insert(New(PLabel, Init(R, 'Notes:', Memo)));
  110.  
  111.   R.Assign(2, 14, 12, 16);
  112.   Insert(New(PButton, Init(R, '~N~ew', cmOrderNew, bfNormal)));
  113.   R.Assign(13, 14, 23, 16);
  114.   Insert(New(PButton, Init(R, '~S~ave', cmOrderSave, bfDefault)));
  115.   R.Assign(24, 14, 34, 16);
  116.   Insert(New(PButton, Init(R, 'Re~v~ert', cmOrderCancel, bfNormal)));
  117.   R.Assign(35, 14, 45, 16);
  118.   Insert(New(PButton, Init(R, 'N~e~xt', cmOrderNext, bfNormal)));
  119.   R.Assign(46, 14, 56, 16);
  120.   Insert(New(PButton, Init(R, '~P~rev', cmOrderPrev, bfNormal)));
  121.  
  122.   R.Assign(5, 16, 20, 17);
  123.   Counter := New(PCountView, Init(R));
  124.   with Counter^ do
  125.   begin
  126.     SetCount(OrderColl^.Count);
  127.   end;
  128.   Insert(Counter);
  129.  
  130.   SelectNext(False);
  131.   EnableCommands([cmOrderSave]);
  132. end;
  133.  
  134. constructor TOrderDialog.Load(var S: TStream);
  135. begin
  136.   inherited Load(S);
  137.   GetSubviewPtr(S, OrderNum);
  138.   GetSubviewPtr(S, QtyOrdered);
  139.   GetSubviewPtr(S, StockNum);
  140.   GetSubviewPtr(S, DateOrdered);
  141.   GetSubviewPtr(S, Memo);
  142.   GetSubviewPtr(S, Received);
  143.   GetSubviewPtr(S, PayMethod);
  144.   GetSubviewPtr(S, Counter);
  145. end;
  146.  
  147. destructor TOrderDialog.Done;
  148. begin
  149.   DisableCommands([cmOrderSave, cmOrderNext, cmOrderPrev]);
  150.   inherited Done;
  151. end;
  152.  
  153. procedure TOrderDialog.HandleEvent(var Event: TEvent);
  154. begin
  155.   inherited HandleEvent(Event);
  156.   if (Event.What = evBroadcast) and (Event.Command = cmFindOrderWindow) then
  157.     ClearEvent(Event);
  158. end;
  159.  
  160. procedure TOrderDialog.Store(var S: TStream);
  161. begin
  162.   inherited Store(S);
  163.   PutSubviewPtr(S, OrderNum);
  164.   PutSubviewPtr(S, QtyOrdered);
  165.   PutSubviewPtr(S, StockNum);
  166.   PutSubviewPtr(S, DateOrdered);
  167.   PutSubviewPtr(S, Memo);
  168.   PutSubviewPtr(S, Received);
  169.   PutSubviewPtr(S, PayMethod);
  170.   PutSubviewPtr(S, Counter);
  171. end;
  172.  
  173. function TOrderDialog.Valid(Command: Word): Boolean;
  174. begin
  175.   case Command of
  176.     cmOrderCancel, cmCancel: Valid := True;
  177.   else Valid := inherited Valid(Command);
  178.   end;
  179. end;
  180.  
  181. procedure LoadOrders;
  182. var
  183.   OrderFile: TBufStream;
  184. begin
  185.   OrderFile.Init('ORDERS.DAT', stOpenRead, 1024);
  186.   OrderColl := PCollection(OrderFile.Get);
  187.   OrderFile.Done;
  188. end;
  189.  
  190. procedure SaveOrders;
  191. var
  192.   OrderFile: TBufStream;
  193. begin
  194.   OrderFile.Init('ORDERS.DAT', stOpenWrite, 1024);
  195.   OrderFile.Put(OrderColl);
  196.   OrderFile.Done;
  197. end;
  198.  
  199. procedure RegisterOrders;
  200. begin
  201.   RegisterType(ROrderDialog);
  202. end;
  203.  
  204. end.
  205.