home *** CD-ROM | disk | FTP | other *** search
- // demo2.cpp BROWSE RECORD EDIT WINDOW
- // written by Gregory K. Miskin
- // COPYRIGHT (C) 1992. All Rights Reserved.
- // Gregory K. Miskin, Orem, Utah USA
-
- #define Uses_TButton
- #define Uses_TEvent
- #define Uses_TDialog
- #define Uses_TRect
- #define Uses_TLabel
- #define Uses_TInputLine
- #define Uses_TSItem
- #define Uses_MsgBox
-
- #include <tv.h>
- #include <stdlib.h>
- #include <string.h>
- #include "commands.hpp"
- #include "formatln.hpp"
- #include "demo2.hpp"
-
- long recs;
-
- typedef struct
- {
- char fname [16];
- char recno [5];
- char lname [16];
- char count [5];
- char street [31];
- char city [21];
- char state [3];
- char zip [6];
- } swEditBox;
-
- swEditBox rec;
-
- /*------------------------------------------------------------------------*/
- TEditRecord::TEditRecord(long rec) :
- TDialog(TRect(0, 0, 49, 14), "Edit One Record"),
- TWindowInit(&TEditRecord::initFrame)
- {
- int ls, le, col1, col2, col3, col4;
- RecordNo = rec;
-
- cBase = new CodeBase;
- name = new DataIndex(cBase);
- cBase->open_error = 0;
-
- ls = 2;
- le = 3;
- col1 = 1;
- col2 = 12;
- col3 = 14;
- col4 = 40;
-
-
- e_fname = new TFormatLine(TRect(col3,ls,32,le),"AAAAAAAAAAAAAAA",16);
- insert(e_fname);
- insert(new TLabel(TRect(col1,ls,col2,le), "First Name:", e_fname));
-
- e_recno = new TFormatLine(TRect(col4,ls,47,le),"NNNN",5);
- e_recno->options &= (!ofSelectable);
- insert(e_recno);
- insert(new TLabel(TRect(32,ls,39,le), "RecNo:", e_recno));
-
- ls++;
- le++;
- e_lname = new TFormatLine(TRect(col3,ls,32,le),"AAAAAAAAAAAAAAA",16);
- insert(e_lname);
- insert(new TLabel(TRect(col1,ls,col2,le), " Last Name:", e_lname));
-
- e_count = new TFormatLine(TRect(col4,ls,47,le),"NNNN",5);
- e_count->options &= (!ofSelectable);
- insert(e_count);
- insert(new TLabel(TRect(32,ls,39,le), "Count:", e_count));
-
-
- ls++;
- le++;
- e_street = new TFormatLine(TRect(col3,ls,47,le),"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU",31);
- insert(e_street);
- insert(new TLabel(TRect(col1,ls,col2,le), " Street:", e_street));
-
- ls++;
- le++;
- e_city = new TFormatLine(TRect(col3,ls,37,le),"AAAAAAAAAAAAAAAAAAAA",21);
- insert(e_city);
- insert(new TLabel(TRect(col1,ls,col2,le), " City:", e_city));
-
- ls++;
- le++;
- e_state = new TFormatLine(TRect(col3,ls,19,le),"AA",3);
- insert(e_state);
- insert(new TLabel(TRect(col1,ls,col2,le), " State:", e_state));
-
- ls++;
- le++;
- e_zip = new TFormatLine(TRect(col3,ls,22,le),"NNNNN",6);
- insert(e_zip);
- insert(new TLabel(TRect(col1,ls,col2,le), " Zip:", e_zip));
-
- ls+=2;
- le+=3;
- col1 = 6;
- col2 = 18;
- col3 = 30;
- col4 = 42;
-
- e_save = new TButton(TRect(col1, ls, col2, le), "~S~ave", cmSave, bfNormal);
- e_del = new TButton(TRect(col3, ls, col4, le), "~D~elete", cmDelete, bfNormal);
-
- ls+=2;
- le+=2;
- e_quit = new TButton(TRect(col1, ls, col2, le), "~Q~uit", cmCancel, bfNormal);
- e_undel = new TButton(TRect(col3, ls, col4, le), "~U~ndelete", cmRestore, bfNormal);
-
- insert(e_save);
- insert(e_quit);
- insert(e_del);
- insert(e_undel);
-
- Initialize();
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::Initialize()
- {
- name->open("DEMO");
- name->go(RecordNo);
-
- options |= ofCentered;
- selectNext(FALSE);
- memset(&rec, 0, sizeof(rec));
- recs = name->reccount();
- itoa(recs, rec.count, 10);
- itoa(RecordNo, rec.recno, 10);
- GetAllFields();
- setData(&rec);
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::handleEvent(TEvent &event)
- {
- TDialog::handleEvent(event);
-
- switch(event.what)
- {
- case evCommand:
- switch(event.message.command)
- {
- case cmSave:
- // save changes to database
- SaveFile();
- setCurrent(e_fname, normalSelect);
- break;
-
- case cmDelete:
- // delete current record
- Delete();
- setCurrent(e_fname, normalSelect);
- break;
-
- case cmRestore:
- // delete current record
- UnDelete();
- setCurrent(e_fname, normalSelect);
- break;
-
- default:
- break;
- }
- event.what = evCommand;
- event.message.command = cmCancel;
- event.message.infoPtr = 0;
- putEvent(event);
- break;
-
- case evBroadcast:
- if(event.message.command == cmDefault)
- {
- selectNext(FALSE);
- }
- break;
- default:
- return;
- }
- }
-
- /*------------------------------------------------------------------------*/
- TEditRecord::~TEditRecord(void)
- {
- cBase->close_all();
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::SaveFile()
- {
- getData(&rec);
- WriteRecord();
- name->write(RecordNo);
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::Delete(void)
- {
- name->delete_rec();
- messageBox("\003Record flagged for deletion",
- mfInformation | mfOKButton);
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::UnDelete(void)
- {
- name->recall();
- messageBox("\003Delete flag removed",
- mfInformation | mfOKButton);
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::GetStr(int field_num, char *fld)
- {
- int len = 0;
-
- Fld = name->field(field_num);
- len = Fld->len();
- strncpy(fld,Fld->ptr(),len);
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::PutStr(int field_num, char *fld)
- {
- Fld = name->field(field_num);
- *Fld = fld;
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::GetAllFields(void)
- {
- GetStr(nmFIRST_NAME, rec.fname);
- GetStr(nmLAST_NAME, rec.lname);
- GetStr(nmSTREET, rec.street);
- GetStr(nmCITY, rec.city);
- GetStr(nmSTATE, rec.state);
- GetStr(nmZIP, rec.zip);
- }
-
- /*------------------------------------------------------------------------*/
- void TEditRecord::WriteRecord(void)
- {
- PutStr(nmFIRST_NAME, rec.fname);
- PutStr(nmLAST_NAME, rec.lname);
- PutStr(nmSTREET, rec.street);
- PutStr(nmCITY, rec.city);
- PutStr(nmSTATE, rec.state);
- PutStr(nmZIP, rec.zip);
- }
-