home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / tvision / vlstde / demo2.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-12  |  6.1 KB  |  258 lines

  1. // demo2.cpp            BROWSE RECORD EDIT WINDOW
  2. //    written by Gregory K. Miskin
  3. //    COPYRIGHT (C) 1992.  All Rights Reserved.
  4. //    Gregory K. Miskin, Orem, Utah  USA
  5.  
  6. #define Uses_TButton
  7. #define Uses_TEvent
  8. #define Uses_TDialog
  9. #define Uses_TRect
  10. #define Uses_TLabel
  11. #define Uses_TInputLine
  12. #define Uses_TSItem
  13. #define Uses_MsgBox
  14.  
  15. #include <tv.h>
  16. #include <stdlib.h>
  17. #include <string.h>
  18. #include "commands.hpp"
  19. #include "formatln.hpp"
  20. #include "demo2.hpp"
  21.  
  22. long recs;
  23.  
  24. typedef struct
  25. {
  26.     char  fname    [16];
  27.     char    recno        [5];
  28.     char  lname    [16];
  29.     char    count        [5];
  30.     char  street   [31];
  31.     char  city     [21];
  32.     char  state    [3];
  33.     char  zip      [6];
  34. } swEditBox;
  35.  
  36. swEditBox         rec;
  37.  
  38. /*------------------------------------------------------------------------*/
  39. TEditRecord::TEditRecord(long rec) :
  40.         TDialog(TRect(0, 0, 49, 14), "Edit One Record"),
  41.         TWindowInit(&TEditRecord::initFrame)
  42. {
  43.     int ls, le, col1, col2, col3, col4;
  44.     RecordNo = rec;
  45.  
  46.     cBase = new CodeBase;
  47.     name     = new DataIndex(cBase);
  48.     cBase->open_error = 0;
  49.  
  50.     ls = 2;
  51.     le = 3;
  52.     col1 = 1;
  53.     col2 = 12;
  54.     col3 = 14;
  55.     col4 = 40;
  56.  
  57.  
  58.     e_fname  = new TFormatLine(TRect(col3,ls,32,le),"AAAAAAAAAAAAAAA",16);
  59.     insert(e_fname);
  60.     insert(new TLabel(TRect(col1,ls,col2,le),  "First Name:", e_fname));
  61.  
  62.     e_recno  = new TFormatLine(TRect(col4,ls,47,le),"NNNN",5);
  63.     e_recno->options &= (!ofSelectable);
  64.     insert(e_recno);
  65.     insert(new TLabel(TRect(32,ls,39,le), "RecNo:", e_recno));
  66.  
  67.     ls++;
  68.     le++;
  69.     e_lname  = new TFormatLine(TRect(col3,ls,32,le),"AAAAAAAAAAAAAAA",16);
  70.     insert(e_lname);
  71.     insert(new TLabel(TRect(col1,ls,col2,le),  " Last Name:", e_lname));
  72.  
  73.     e_count  = new TFormatLine(TRect(col4,ls,47,le),"NNNN",5);
  74.     e_count->options &= (!ofSelectable);
  75.     insert(e_count);
  76.     insert(new TLabel(TRect(32,ls,39,le), "Count:", e_count));
  77.  
  78.  
  79.     ls++;
  80.     le++;
  81.     e_street = new TFormatLine(TRect(col3,ls,47,le),"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU",31);
  82.     insert(e_street);
  83.     insert(new TLabel(TRect(col1,ls,col2,le),  "    Street:", e_street));
  84.  
  85.     ls++;
  86.     le++;
  87.     e_city   = new TFormatLine(TRect(col3,ls,37,le),"AAAAAAAAAAAAAAAAAAAA",21);
  88.     insert(e_city);
  89.     insert(new TLabel(TRect(col1,ls,col2,le),  "      City:", e_city));
  90.  
  91.     ls++;
  92.     le++;
  93.     e_state  = new TFormatLine(TRect(col3,ls,19,le),"AA",3);
  94.     insert(e_state);
  95.     insert(new TLabel(TRect(col1,ls,col2,le),  "     State:", e_state));
  96.  
  97.     ls++;
  98.     le++;
  99.     e_zip    = new TFormatLine(TRect(col3,ls,22,le),"NNNNN",6);
  100.     insert(e_zip);
  101.     insert(new TLabel(TRect(col1,ls,col2,le),  "       Zip:", e_zip));
  102.  
  103.     ls+=2;
  104.     le+=3;
  105.     col1 = 6;
  106.     col2 = 18;
  107.     col3 = 30;
  108.     col4 = 42;
  109.  
  110.     e_save     = new TButton(TRect(col1, ls, col2, le), "~S~ave",   cmSave,       bfNormal);
  111.     e_del         = new TButton(TRect(col3, ls, col4, le), "~D~elete", cmDelete,  bfNormal);
  112.  
  113.     ls+=2;
  114.     le+=2;
  115.     e_quit     = new TButton(TRect(col1, ls, col2, le), "~Q~uit",   cmCancel,  bfNormal);
  116.     e_undel    = new TButton(TRect(col3, ls, col4, le), "~U~ndelete", cmRestore,  bfNormal);
  117.  
  118.     insert(e_save);
  119.     insert(e_quit);
  120.     insert(e_del);
  121.     insert(e_undel);
  122.  
  123.     Initialize();
  124. }
  125.  
  126. /*------------------------------------------------------------------------*/
  127. void TEditRecord::Initialize()
  128. {
  129.     name->open("DEMO");
  130.     name->go(RecordNo);
  131.  
  132.     options |= ofCentered;
  133.     selectNext(FALSE);
  134.     memset(&rec, 0, sizeof(rec));
  135.     recs = name->reccount();
  136.     itoa(recs, rec.count, 10);
  137.     itoa(RecordNo, rec.recno, 10);
  138.     GetAllFields();
  139.     setData(&rec);
  140. }
  141.  
  142. /*------------------------------------------------------------------------*/
  143. void TEditRecord::handleEvent(TEvent &event)
  144. {
  145.      TDialog::handleEvent(event);
  146.  
  147.      switch(event.what)
  148.      {
  149.         case evCommand:
  150.             switch(event.message.command)
  151.             {
  152.                 case cmSave:
  153.                     // save changes to database
  154.                     SaveFile();
  155.                     setCurrent(e_fname, normalSelect);
  156.                     break;
  157.  
  158.                 case cmDelete:
  159.                     // delete current record
  160.                     Delete();
  161.                     setCurrent(e_fname, normalSelect);
  162.                     break;
  163.  
  164.                 case cmRestore:
  165.                     // delete current record
  166.                     UnDelete();
  167.                     setCurrent(e_fname, normalSelect);
  168.                     break;
  169.  
  170.                 default:
  171.                     break;
  172.             }
  173.             event.what = evCommand;
  174.             event.message.command = cmCancel;
  175.             event.message.infoPtr = 0;
  176.             putEvent(event);
  177.             break;
  178.  
  179.         case evBroadcast:
  180.             if(event.message.command == cmDefault)
  181.             {
  182.                 selectNext(FALSE);
  183.             }
  184.             break;
  185.         default:
  186.             return;
  187.     }
  188. }
  189.  
  190. /*------------------------------------------------------------------------*/
  191. TEditRecord::~TEditRecord(void)
  192. {
  193.     cBase->close_all();
  194. }
  195.  
  196. /*------------------------------------------------------------------------*/
  197. void TEditRecord::SaveFile()
  198. {
  199.     getData(&rec);
  200.     WriteRecord();
  201.     name->write(RecordNo);
  202. }
  203.  
  204. /*------------------------------------------------------------------------*/
  205. void TEditRecord::Delete(void)
  206. {
  207.     name->delete_rec();
  208.     messageBox("\003Record flagged for deletion",
  209.             mfInformation | mfOKButton);
  210. }
  211.  
  212. /*------------------------------------------------------------------------*/
  213. void TEditRecord::UnDelete(void)
  214. {
  215.     name->recall();
  216.     messageBox("\003Delete flag removed",
  217.             mfInformation | mfOKButton);
  218. }
  219.  
  220. /*------------------------------------------------------------------------*/
  221. void TEditRecord::GetStr(int field_num, char *fld)
  222. {
  223.     int len = 0;
  224.  
  225.     Fld = name->field(field_num);
  226.     len = Fld->len();
  227.     strncpy(fld,Fld->ptr(),len);
  228. }
  229.  
  230. /*------------------------------------------------------------------------*/
  231. void TEditRecord::PutStr(int field_num, char *fld)
  232. {
  233.     Fld = name->field(field_num);
  234.     *Fld = fld;
  235. }
  236.  
  237. /*------------------------------------------------------------------------*/
  238. void TEditRecord::GetAllFields(void)
  239. {
  240.     GetStr(nmFIRST_NAME, rec.fname);
  241.     GetStr(nmLAST_NAME,     rec.lname);
  242.     GetStr(nmSTREET,         rec.street);
  243.     GetStr(nmCITY,         rec.city);
  244.     GetStr(nmSTATE,         rec.state);
  245.     GetStr(nmZIP,             rec.zip);
  246. }
  247.  
  248. /*------------------------------------------------------------------------*/
  249. void TEditRecord::WriteRecord(void)
  250. {
  251.     PutStr(nmFIRST_NAME, rec.fname);
  252.     PutStr(nmLAST_NAME,  rec.lname);
  253.     PutStr(nmSTREET,     rec.street);
  254.     PutStr(nmCITY,       rec.city);
  255.     PutStr(nmSTATE,      rec.state);
  256.     PutStr(nmZIP,        rec.zip);
  257. }
  258.