home *** CD-ROM | disk | FTP | other *** search
- {************************************************}
- { }
- { Turbo Vision 2.0 Demo }
- { Copyright (c) 1992 by Borland International }
- { }
- {************************************************}
-
- unit Orders;
-
- interface
-
- uses TutConst, Drivers, Objects, TutTypes, Dialogs, Editors, Count;
-
- type
- POrderDialog = ^TOrderDialog;
- TOrderDialog = object(TDialog)
- OrderNum, QtyOrdered, StockNum, DateOrdered: PInputLine;
- Memo: PMemo;
- Received: PCheckBoxes;
- PayMethod: PRadioButtons;
- Counter: PCountView;
- constructor Init;
- constructor Load(var S: TStream);
- destructor Done; virtual;
- procedure HandleEvent(var Event: TEvent); virtual;
- procedure Store(var S: TStream); virtual;
- function Valid(Command: Word): Boolean; virtual;
- end;
-
- var
- OrderColl: PCollection;
- CurrentOrder: Integer;
- OrderInfo: TOrder;
- TempOrder: POrderObj;
-
- procedure LoadOrders;
- procedure SaveOrders;
- procedure RegisterOrders;
-
- const
- ROrderDialog: TStreamRec = (
- ObjType: 993;
- VmtLink: Ofs(TypeOf(TOrderDialog)^);
- Load: @TOrderDialog.Load;
- Store: @TOrderDialog.Store
- );
-
-
- implementation
-
- uses Views, Validate, Stocks;
-
- constructor TOrderDialog.Init;
- var
- R: TRect;
- ALabel: PLabel;
- begin
- R.Assign(0, 0, 60, 17);
- inherited Init(R, 'Orders');
- Options := Options or ofCentered;
- HelpCtx := $F000;
-
- R.Assign(13, 2, 23, 3);
- OrderNum := New(PInputLine, Init(R, 8));
- OrderNum^.SetValidator(New(PRangeValidator, Init(1, 99999)));
- Insert(OrderNum);
- R.Assign(2, 2, 12, 3);
- Insert(New(PLabel, Init(R, '~O~rder #:', OrderNum)));
-
- R.Assign(43, 2, 53, 3);
- DateOrdered := New(PInputLine, Init(R, 8));
- DateOrdered^.SetValidator(New(PPXPictureValidator, Init('{#[#]}/{#[#]}/{##[##]}', True)));
- Insert(DateOrdered);
- R.Assign(26, 2, 41, 3);
- Insert(New(PLabel, Init(R, '~D~ate of order:', DateOrdered)));
-
- R.Assign(13, 4, 23, 5);
- StockNum := New(PInputLine, Init(R, 8));
- StockNum^.SetValidator(New(PStockNumValidator, Init));
- Insert(StockNum);
- R.Assign(2, 4, 12, 5);
- Insert(New(PLabel, Init(R, '~S~tock #:', StockNum)));
-
- R.Assign(46, 4, 53, 5);
- QtyOrdered := New(PInputLine, Init(R, 5));
- QtyOrdered^.SetValidator(New(PRangeValidator, Init(1, 99999)));
- Insert(QtyOrdered);
- R.Assign(26, 4, 44, 5);
- Insert(New(PLabel, Init(R, '~Q~uantity ordered:', QtyOrdered)));
-
- R.Assign(3, 7, 57, 8);
- PayMethod := New(PRadioButtons, Init(R,
- NewSItem('Cash ',
- NewSItem('Check ',
- NewSItem('P.O. ',
- NewSItem('Account', nil))))));
- Insert(PayMethod);
- R.Assign(2, 6, 21, 7);
- Insert(New(PLabel, Init(R, 'Method of ~p~ayment:', PayMethod)));
-
- R.Assign(22, 8, 37, 9);
- Received := New(PCheckBoxes, Init(R, NewSItem('~R~eceived', nil)));
- Insert(Received);
-
- R.Assign(3, 10, 57, 13);
- Memo := New(PMemo, Init(R, nil, nil, nil, 255));
- Insert(Memo);
- R.Assign(2, 9, 9, 10);
- Insert(New(PLabel, Init(R, 'Notes:', Memo)));
-
- R.Assign(2, 14, 12, 16);
- Insert(New(PButton, Init(R, '~N~ew', cmOrderNew, bfNormal)));
- R.Assign(13, 14, 23, 16);
- Insert(New(PButton, Init(R, '~S~ave', cmOrderSave, bfDefault)));
- R.Assign(24, 14, 34, 16);
- Insert(New(PButton, Init(R, 'Re~v~ert', cmOrderCancel, bfNormal)));
- R.Assign(35, 14, 45, 16);
- Insert(New(PButton, Init(R, 'N~e~xt', cmOrderNext, bfNormal)));
- R.Assign(46, 14, 56, 16);
- Insert(New(PButton, Init(R, '~P~rev', cmOrderPrev, bfNormal)));
-
- R.Assign(5, 16, 20, 17);
- Counter := New(PCountView, Init(R));
- with Counter^ do
- begin
- SetCount(OrderColl^.Count);
- end;
- Insert(Counter);
-
- SelectNext(False);
- EnableCommands([cmOrderSave]);
- end;
-
- constructor TOrderDialog.Load(var S: TStream);
- begin
- inherited Load(S);
- GetSubviewPtr(S, OrderNum);
- GetSubviewPtr(S, QtyOrdered);
- GetSubviewPtr(S, StockNum);
- GetSubviewPtr(S, DateOrdered);
- GetSubviewPtr(S, Memo);
- GetSubviewPtr(S, Received);
- GetSubviewPtr(S, PayMethod);
- GetSubviewPtr(S, Counter);
- end;
-
- destructor TOrderDialog.Done;
- begin
- DisableCommands([cmOrderSave, cmOrderNext, cmOrderPrev]);
- inherited Done;
- end;
-
- procedure TOrderDialog.HandleEvent(var Event: TEvent);
- begin
- inherited HandleEvent(Event);
- if (Event.What = evBroadcast) and (Event.Command = cmFindOrderWindow) then
- ClearEvent(Event);
- end;
-
- procedure TOrderDialog.Store(var S: TStream);
- begin
- inherited Store(S);
- PutSubviewPtr(S, OrderNum);
- PutSubviewPtr(S, QtyOrdered);
- PutSubviewPtr(S, StockNum);
- PutSubviewPtr(S, DateOrdered);
- PutSubviewPtr(S, Memo);
- PutSubviewPtr(S, Received);
- PutSubviewPtr(S, PayMethod);
- PutSubviewPtr(S, Counter);
- end;
-
- function TOrderDialog.Valid(Command: Word): Boolean;
- begin
- case Command of
- cmOrderCancel, cmCancel: Valid := True;
- else Valid := inherited Valid(Command);
- end;
- end;
-
- procedure LoadOrders;
- var
- OrderFile: TBufStream;
- begin
- OrderFile.Init('ORDERS.DAT', stOpenRead, 1024);
- OrderColl := PCollection(OrderFile.Get);
- OrderFile.Done;
- end;
-
- procedure SaveOrders;
- var
- OrderFile: TBufStream;
- begin
- OrderFile.Init('ORDERS.DAT', stOpenWrite, 1024);
- OrderFile.Put(OrderColl);
- OrderFile.Done;
- end;
-
- procedure RegisterOrders;
- begin
- RegisterType(ROrderDialog);
- end;
-
- end.
-