home *** CD-ROM | disk | FTP | other *** search
- {$A+,B-,D+,F+,G+,I-,K+,L+,N+,P-,Q-,R-,S-,T-,V+,W+,X+,Y+}
- {$M 25000,8192}
- {************************************************}
- { }
- { Demo program }
- { Copyright (c) 1994 by Borland International }
- { }
- {************************************************}
-
-
- program Employee;
-
- {$R EMPLOYEE.RES}
-
-
- uses WinTypes, WinProcs, WinDos, Strings, OWindows, ODialogs, Engine,
- IDAPI, DbiTypes, DbiErrs, EmpConst, BWCC;
-
- const
- { Application name }
-
- TableName = 'Employee.dbf';
-
- file_Handles = 40;
-
- AddMode = 1;
- ModMode = 2;
-
-
- id_FirstRec = 100;
- id_PrevRec = 110;
- id_NextRec = 120;
- id_LastRec = 130;
- id_About = 1140;
- id_NewRec = 155;
- id_DelRec = 165;
- id_Exit = 1170;
-
- Id_Filter = 1180;
- Id_SaveRec = 190;
- Id_Order = 1200;
- Id_Range = 1210;
- Id_Search = 1220;
- Id_UndoRec = 123;
-
- { Edit box ID's }
-
- IDE_FName = 2000;
- IDE_LName = 2001;
- IDE_Address1 = 2002;
- IDE_Address2 = 2003;
- IDE_City = 2004;
- IDE_State = 2005;
- IDE_Zip = 2006;
- IDE_HPhone = 2007;
- IDE_WPhone = 2008;
- IDE_EmployeeId = 2009;
- IDE_StartDate = 2010;
- IDE_EndDate = 2011;
- IDE_Department = 2012;
- IDE_Comments = 2013;
-
- { Static Text fields }
- St_Names = 101;
- St_Dates = 102;
-
- { OrderDialog Controls }
-
- IDC_OrderIdxNames = 103;
- IDC_OrderInfo = 104;
-
- { SearchDialog Controls }
-
- IDC_SearchIdxNames = 101;
- IDE_SearchInfo = 103;
-
- type
-
- { PEmployee dialog window object }
-
- PEmployee = ^TEmployee;
- TEmployee = object(TDlgWindow)
- TableEmpty: boolean;
- Mode: integer;
- constructor Init;
- procedure SetUpWindow; virtual;
- procedure ChangeMode(NewMode: integer);
- procedure ClearFields(Rec: PRecordType);
- procedure DisplayRecord(Rec: PRecordType);
- procedure DisableCommand(CommandId: Integer);
- procedure EnableCommand(CommandId: Integer);
- procedure EnableControls;
- procedure DisableControls;
- function verified: boolean;
- function GetClassName: PChar; virtual;
- procedure GetRec(var Rec: TRecordType);
- procedure GetWindowClass(var AWndClass: TWndClass); virtual;
- procedure idExit(var Msg: TMessage);
- virtual cm_First + id_Exit;
- procedure cmAbout(var Msg: TMessage);
- virtual cm_First + id_About;
- procedure idFirstRec(var Msg: TMessage);
- virtual id_First + id_FirstRec;
- procedure idLastRec(var Msg: TMessage);
- virtual id_First + id_LastRec;
- procedure idNextRec(var Msg: TMessage);
- virtual id_First + id_NextRec;
- procedure idPrevRec(var Msg: TMessage);
- virtual id_First + id_PrevRec;
- procedure idNewRec(var Msg: TMessage);
- virtual id_First + id_NewRec;
- procedure idDelRec(var Msg: TMessage);
- virtual id_First + id_DelRec;
- procedure idOrder(var Msg: TMessage);
- virtual cm_First + id_Order;
- procedure idSaveRec(var Msg: TMessage);
- virtual id_First + id_SaveRec;
- procedure idSearch(var Msg: TMessage);
- virtual cm_First + id_Search;
- procedure idUndoRec(var Msg: TMessage);
- virtual id_First + id_UndoRec;
- procedure WmDisplay(var Msg: TMessage);
- virtual wm_First + wm_Display;
- procedure wmCommand(var Msg: TMessage);
- virtual wm_First + wm_Command;
- procedure OK(var Msg: TMessage);
- virtual id_First + id_OK;
- procedure Cancel(var Msg: TMessage);
- virtual id_First + id_Cancel;
- procedure WMClose(var Msg: TMessage);
- virtual wm_First + wm_Close;
- end;
-
- { Index Order Dialog Definition }
-
- POrderDialog = ^TOrderDialog;
- TOrderDialog = object(TDialog)
- constructor Init;
- procedure SetupWindow; virtual;
- procedure WMCommand(var Msg: TMessage);
- virtual wm_First + wm_Command;
- end;
-
- { Search Dialog Definition }
-
- PSearchDialog = ^TSearchDialog;
- TSearchDialog = object(TDialog)
- constructor Init;
- procedure SetupWindow; virtual;
- procedure WMCommand(var Msg: TMessage);
- virtual wm_First + wm_Command;
- end;
-
- { Employee application object }
-
- TEmployeeApp = object(TApplication)
- procedure InitMainWindow; virtual;
- end;
-
- var
-
- { Application instance }
-
- EmployeeApp: TEmployeeApp;
- hdb: hDBIdb;
- hCur: hDBICur;
-
- function FillIndexCBox(Hw: HWND; ID: integer): integer;
- var
- i: integer;
- Off: integer;
- Index: Longint;
- begin
-
- for i := 1 to NumIndexes do
- begin
- Off := SendDlgItemMessage(Hw, ID, CB_ADDSTRING, 0,
- LONGINT(PChar(@XIDXDesc[i].szTagName)));
- SendDlgItemMessage(Hw, ID, CB_SETITEMDATA, Off, i);
- end;
-
- i := GetIndexNum(hCur);
- { Select that index from the combo box list. }
- Off := SendDlgItemMessage(Hw, ID, CB_SELECTSTRING, word(-1),
- Longint(PChar(@XIDXDesc[i].szTagName)));
- Index := SendDlgItemMessage(Hw, ID, CB_GETITEMDATA, Off, 0);
- { Set the description text into the static text box based upon
- the index's item data. }
- FillIndexCBox := Index;
- end;
-
- procedure SetFieldLen(HW: HWND; ID, Index: Integer);
- var
- LimitLen: integer;
- begin
- case Index of
- 1: LimitLen := NameLen;
- 2: LimitLen := EmpIdLen;
- 3: LimitLen := DeptLen;
- end; { case }
- SendDlgItemMessage(HW, ID, EM_LIMITTEXT, LimitLen, 0);
- end;
-
- { TOrderDialog }
- constructor TOrderDialog.Init;
- begin
- inherited Init(@self, 'ORDERDLG');
- end;
-
- procedure TOrderDialog.SetupWindow;
- var
- Index: Longint;
- begin
- inherited SetupWindow;
- Index := FillIndexCBox(HWindow, IDC_OrderIdxNames);
- SetWindowText(GetDlgItem(HWindow, IDC_ORDERINFO), IDXDescriptions[Index]);
- end;
-
- procedure TOrderDialog.WMCommand(var Msg: TMessage);
- var
- Sel: integer;
- Index: integer;
- begin
- case Msg.wParam of
- IDC_OrderIdxNames:
- if HiWord(Msg.LParam) = CBN_SELCHANGE then
- begin
- Sel := SendDlgItemMessage(HWindow, IDC_OrderIdxNames, CB_GETCURSEL, 0, 0);
- Index := SendDlgItemMessage(HWindow, IDC_OrderIdxNames, CB_GETITEMDATA, Sel, 0);
- { Put the Index description in the static text box. }
- SetWindowText(GetDlgItem(HWindow, IDC_OrderInfo), IDXDescriptions[Index]);
- end;
- id_Cancel:
- EndDialog(HWindow, id_Cancel);
- ID_OK:
- begin
- Sel := SendDlgItemMessage(HWindow, IDC_OrderIdxNames, CB_GETCURSEL, 0, 0);
- Index := SendDlgItemMessage(HWindow, IDC_OrderIdxNames, CB_GETITEMDATA, Sel, 0);
- SetIndex(hCur, Index, True);
- EndDialog(HWindow, ID_OK);
- end;
- else
- inherited WMCommand(Msg);
- end; { case }
- end;
-
- { TSearchDialog }
- constructor TSearchDialog.Init;
- begin
- inherited Init(@self, 'SEARCHDLG');
- end;
-
- procedure TSearchDialog.SetupWindow;
- var
- Index: Longint;
-
- begin
- inherited SetupWindow;
- Index := FillIndexCBox(HWindow, IDC_SearchIdxNames);
- SetWindowText(GetDlgItem(HWindow, IDC_ORDERINFO), IDXDescriptions[Index]);
- SetFieldLen(HWindow, IDE_SearchInfo, Index);
- SendDlgItemMessage(HWindow, IDE_SearchInfo, EM_LIMITTEXT, 20, 0);
- end;
-
- procedure TSearchDialog.WMCommand(var Msg: TMessage);
- var
- Sel, Result: integer;
- OldIndex, Index: integer;
- SearchStr: array[0..MaxFieldSize] of char;
- RetVal: Boolean;
- begin
- RetVal := false;
- case Msg.wParam of
- IDC_SearchIdxNames:
- if HiWord(Msg.LParam) = CBN_SELCHANGE then
- begin
- Sel := SendDlgItemMessage(HWindow, IDC_SearchIdxNames, CB_GETCURSEL, 0, 0);
- Index := SendDlgItemMessage(HWindow, IDC_SearchIdxNames, CB_GETITEMDATA, Sel, 0);
- { Put the Index description in the static text box. }
- SetFieldLen(HWindow, IDE_SearchInfo, Index);
- SendDlgItemMessage(HWindow, IDE_SearchInfo, WM_SETTEXT, 0, Longint(PChar('')));
- end;
- id_Cancel:
- EndDialog(HWindow, id_Cancel);
- ID_OK:
- begin
- { Get the new index to search on. }
- Sel := SendDlgItemMessage(HWindow, IDC_SearchIdxNames, CB_GETCURSEL, 0, 0);
- Index := SendDlgItemMessage(HWindow, IDC_SearchIdxNames,CB_GETITEMDATA, Sel, 0);
- OldIndex := GetIndexNum(hCur);
- if OldIndex <> Index then
- SetIndex(hCur, Index, true);
- GetDlgItemText(HWindow, IDE_SearchInfo, SearchStr, MaxFieldSize);
- { Search based upon a keySEARCHGEQ condition and the search string. }
- Result := Search(hCur, keySEARCHGEQ, @SearchStr);
-
- case (Result) of
- DBIERR_NONE:
- begin
- if AtEof(hCur) = True then
- begin
- BWCCMessageBox(HWindow, 'Could not find a match', 'Search Error',
- MB_ICONINFORMATION or MB_OK);
- if OldIndex <> Index then
- SetIndex(hCur, OldIndex, true);
- GoTop(hCur, true);
- RetVal := False
- end
- else
- RetVal := True;
- end;
- DBIERR_RECNOTFOUND:
- begin
- BWCCMessageBox(HWindow, 'Could not find a match', 'Search Error',
- MB_ICONINFORMATION or MB_OK);
- if OldIndex <> Index then
- SetIndex(hCur, OldIndex, true);
- GoTop(hCur, true);
- RetVal := false;
- end;
- else
- begin
- BWCCMessageBox(HWindow, 'Could not find a match', 'Search Error',
- MB_ICONINFORMATION or MB_OK);
-
- if OldIndex <> Index then
- SetIndex(hCur, OldIndex, true);
- GoTop(hCur, true);
- RetVal := false;
- end;
- end;
- EndDialog(HWindow, word(RetVal));
- end;
- else
- inherited WMCommand(Msg);
- end; { case }
- end;
-
- { TEmployee }
- constructor TEmployee.Init;
- begin
- inherited Init(nil, 'EmployeeDLG');
- if SetHandleCount(file_Handles) <> file_Handles then
- begin
- BWCCMessageBox(0, 'Not Enough File handles available', 'ERROR', mb_Ok);
- PostQuitMessage(0);
- end;
- SetPrivateDir;
- end;
-
- procedure TEmployee.SetupWindow;
- var
- CurrentRec: PRecordType;
- TblExist: boolean;
- SearchRec: TSearchRec;
- RetVal: DBIResult;
- D: Double;
- TableDir: PChar;
- begin
- inherited SetupWindow;
-
- Mode := ModMode;
- if DBInit <> DBIERR_NONE then
- begin
- BWCCMessageBox(0, 'DataBase could not be initialized', 'Message', mb_ok);
- PostQuitMessage(0);
- end;
-
-
- GetMem(TableDir, dbiMAXPATHLEN + 1);
- FindTablesDir(TableDir, 3);
- StrCat(TableDir, '\');
- StrCat(TableDir, TableName);
- FindFirst(TableDir, faAnyFile, SearchRec);
- if DosError <> 0 then
- begin
- if CreateTable <> DBIERR_NONE then
- begin
- BWCCMessageBox(0, 'Error Creating DataBase', 'Error!', mb_ok);
- PostQuitMessage(0);
- end
- end;
- FreeMem(TableDir, dbiMAXPATHLEN + 1);
- { Now a Table has been created or one already exists. Get the table's database
- / and cursor handles
- }
- if GetTable(hDb, hCur) = DBIERR_NONE then
- begin
- { Set the table index to either: NameIndex, EmpIDIndex or DeptIndex }
- SetIndex(hCur, NameIndex, false);
- if (GetRecordCount(hCur) = 0) then
- begin
- TableEmpty := true;
- AddInitialRecords(hCur);
- end;
-
- { When we move to the top we are sitting on a crack before the
- / first record. If the table is not Empty go to the first record and
- / display the first Record.
- }
- TableEmpty := false;
- GoTop(hCur, TRUE);
- SendMessage(hWindow, wm_Display, 0, 0);
- EnableWindow(GetDlgItem(HWindow, id_Cancel), false);
- EnableWindow(GetDlgItem(HWindow, id_SaveRec), false);
- ShowWindow(GetDlgItem(HWindow, id_Ok), sw_Hide);
- end
- else
- BWCCMessageBox(0, 'Table could not be opened', 'Message', mb_ok);
- end;
-
- procedure TEmployee.ChangeMode(NewMode: integer);
- begin
- if NewMode = AddMode then
- begin
- ShowWindow(GetDlgItem(HWindow, id_FirstRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_PrevRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_LastRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_NextRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_NewRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_DelRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_SaveRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_UndoRec), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_Ok), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_Cancel), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, St_Names), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, St_Dates), sw_Normal);
- Mode := AddMode;
- end
- else if NewMode = ModMode then
- begin
- ShowWindow(GetDlgItem(HWindow, id_FirstRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_PrevRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_LastRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_NextRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_NewRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_DelRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_SaveRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_UndoRec), sw_Normal);
- ShowWindow(GetDlgItem(HWindow, id_Ok), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, id_Cancel), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, St_Names), sw_Hide);
- ShowWindow(GetDlgItem(HWindow, St_Dates), sw_Hide);
- Mode := ModMode;
- end
- end;
-
- procedure TEmployee.ClearFields(Rec: PRecordType);
- begin
- with Rec^ do
- begin
- StrCopy(FName, '');
- StrCopy(LName, '');
- StrCopy(Address1, '');
- StrCopy(Address2, '');
- StrCopy(City, '');
- StrCopy(State, '');
- StrCopy(Zip, '');
- StrCopy(HPhone, '');
- StrCopy(WPhone, '');
- EmpID := 0.0;
- StrCopy(StartDate, '');
- StrCopy(EndDate, '');
- StrCopy(Department, '');
- StrCopy(Comments, '');
- end;
- end;
-
-
- procedure TEmployee.DisableCommand(commandID: Integer);
- begin
- EnableMenuItem(GetMenu(HWindow), CommandID, mf_ByCommand or mf_Grayed);
- EnableWindow(GetDlgItem(HWindow, CommandId), false)
- end;
-
- procedure TEmployee.DisplayRecord(Rec: PRecordType);
- var
- S: array[0..10] of char; {string[10]; }
-
- begin
- SetDlgItemText(HWindow, IDE_FName, Rec^.FName);
- SetDlgItemText(HWindow, IDE_LName, Rec^.LName);
- SetDlgItemText(HWindow, IDE_Address1, Rec^.Address1);
- SetDlgItemText(HWindow, IDE_Address2, Rec^.Address2);
- SetDlgItemText(HWindow, IDE_City, Rec^.City);
- SetDlgItemText(HWindow, IDE_State, Rec^.State);
- SetDlgItemText(HWindow, IDE_Zip, Rec^.Zip);
- SetDlgItemText(HWindow, IDE_HPhone, Rec^.HPhone);
- SetDlgItemText(HWindow, IDE_WPhone, Rec^.WPhone);
- SetDlgItemText(HWindow, IDE_StartDate, Rec^.StartDate);
- SetDlgItemText(HWindow, IDE_EndDate, Rec^.EndDate);
- str(trunc(Rec^.EmpId), S);
- SetDlgItemText(HWindow, IDE_EmployeeID, S);
- SetDlgItemText(HWindow, IDE_Department, Rec^.Department);
- SetDlgItemText(HWindow, IDE_Comments, Rec^.Comments);
- UpdateWindow(HWindow);
- end;
-
-
- procedure TEmployee.EnableCommand(commandID: Integer);
- begin
- EnableMenuItem(GetMenu(HWindow), CommandID, mf_ByCommand or mf_Enabled);
- EnableWindow(GetDlgItem(HWindow, CommandId), true)
- end;
-
- procedure TEmployee.EnableControls;
- begin
- EnableWindow(GetDlgItem(HWindow, IDE_FName), true);
- EnableWindow(GetDlgItem(HWindow, IDE_LName), true);
- EnableWindow(GetDlgItem(HWindow, IDE_Address1), true);
- EnableWindow(GetDlgItem(HWindow, IDE_Address2), true);
- EnableWindow(GetDlgItem(HWindow, IDE_City), true);
- EnableWindow(GetDlgItem(HWindow, IDE_State), true);
- EnableWindow(GetDlgItem(HWindow, IDE_Zip), true);
- EnableWindow(GetDlgItem(HWindow, IDE_HPhone), true);
- EnableWindow(GetDlgItem(HWindow, IDE_WPhone), true);
- EnableWindow(GetDlgItem(HWindow, IDE_EmployeeId), true);
- EnableWindow(GetDlgItem(HWindow, IDE_StartDate), true);
- EnableWindow(GetDlgItem(HWindow, IDE_EndDate), true);
- EnableWindow(GetDlgItem(HWindow, IDE_Department), true);
- EnableWindow(GetDlgItem(HWindow, IDE_Comments), true);
- EnableWindow(GetDlgItem(HWindow, id_DelRec), true);
- end;
-
- Procedure TEmployee.DisableControls;
- begin
- EnableWindow(GetDlgItem(HWindow, IDE_FName), false);
- EnableWindow(GetDlgItem(HWindow, IDE_LName), false);
- EnableWindow(GetDlgItem(HWindow, IDE_Address1), false);
- EnableWindow(GetDlgItem(HWindow, IDE_Address2), false);
- EnableWindow(GetDlgItem(HWindow, IDE_City), false);
- EnableWindow(GetDlgItem(HWindow, IDE_State), false);
- EnableWindow(GetDlgItem(HWindow, IDE_Zip), false);
- EnableWindow(GetDlgItem(HWindow, IDE_HPhone), false);
- EnableWindow(GetDlgItem(HWindow, IDE_WPhone), false);
- EnableWindow(GetDlgItem(HWindow, IDE_EmployeeId), false);
- EnableWindow(GetDlgItem(HWindow, IDE_StartDate), false);
- EnableWindow(GetDlgItem(HWindow, IDE_EndDate), false);
- EnableWindow(GetDlgItem(HWindow, IDE_Department), false);
- EnableWindow(GetDlgItem(HWindow, IDE_Comments), false);
- EnableWindow(GetDlgItem(HWindow, id_DelRec), false);
- end;
-
- procedure TEmployee.GetRec(var Rec: TRecordType);
- var
- S: array[0..10] of char;
- Code: integer;
- begin
- GetDlgItemText(HWindow, IDE_FName, Rec.FName, NameLen);
- GetDlgItemText(HWindow, IDE_LName, Rec.LName, NameLen);
- GetDlgItemText(HWindow, IDE_Address1, Rec.Address1, AddressLen);
- GetDlgItemText(HWindow, IDE_Address2, Rec.Address2, AddressLen);
- GetDlgItemText(HWindow, IDE_City, Rec.City, CityLen);
- GetDlgItemText(HWindow, IDE_State, Rec.State, StateLen);
- GetDlgItemText(HWindow, IDE_Zip, Rec.Zip, ZipLen);
- GetDlgItemText(HWindow, IDE_HPhone, Rec.HPhone, PhoneLen);
- GetDlgItemText(HWindow, IDE_WPhone, Rec.WPhone, PhoneLen);
- GetDlgItemText(HWindow, IDE_StartDate, Rec.StartDate, DateLen);
- GetDlgItemText(HWindow, IDE_EndDate, Rec.EndDate, DateLen);
- GetDlgItemText(HWindow, IDE_EmployeeID, S, EmpIDLen);
- val(S, Rec.EmpID, Code);
- GetDlgItemText(HWindow, IDE_Department, Rec.Department, DeptLen);
- GetDlgItemText(HWindow, IDE_Comments, Rec.Comments, CommentLen);
- end;
-
- function TEmployee.GetClassName: PChar;
- begin
- GetClassName := 'bordlg_employee';
- end;
-
- procedure TEmployee.GetWindowClass(var AWndClass: TWndClass);
- begin
- TDlgWindow.GetWindowClass(AWndClass);
- AWndClass.hIcon := LoadIcon(HInstance, PChar(9999));
- end;
-
- function TEmployee.Verified: boolean;
-
- function CheckDate(CkDate: Pchar): boolean;
- var
- DateNum: integer;
- Month, Day, Year: array[0..3] of char;
- code1, Code2, Code3: integer;
- RetVal: boolean;
- begin
- RetVal := false;
- if strComp(CkDate, '') = 0 then
- RetVal := true
- else begin
- if (CkDate[2] = '-') and (CkDate[5] = '-') then
- begin
- strlcopy(Month, CkDate, 2);
- strlcopy(Day, @CkDate[3], 2);
- strlcopy(Year, @CkDate[6], 2);
- end;
- val(Month, DateNum, code1);
- val(Day, DateNum, code2);
- val(Year, DateNum, code3);
- if (code1 = 0) and (code2 = 0) and (code3 = 0) then
- RetVal := true;
- end;
-
- CheckDate := retval;
- end;
-
- var
- Name: array[0..NameLen] of char;
- FNameLen, LNameLen, Dt1Len, Dt2Len: integer;
- Date1, Date2: array[0..DateLen] of char;
- ValidDates: boolean;
- begin
- verified := false;
- FNameLen := GetDlgItemText(HWindow, IDE_FName, Name, NameLen);
- LNameLen := GetDlgItemText(HWindow, IDE_LName, Name, NameLen);
- Dt1Len := GetDlgItemText(HWindow, IDE_StartDate, Date1, DateLen);
- Dt2len := GetDlgItemText(HWindow, IDE_EndDate, Date2, DateLen);
-
- ValidDates := ((Dt1Len = 8) and ((Dt2Len = 8) or (Dt2Len = 0)));
-
- if (FNameLen > 0) and (ValidDates) then
- if (CheckDate(Date2) and CheckDate(Date1)) then
- verified := true
- else
- verified := false;
- end;
-
- procedure TEmployee.cmAbout(var Msg: TMessage);
- var
- PDlg: PDialog;
- begin
- PDlg := new(PDialog, init(@self, 'ABOUTDLG'));
- PDlg^.Execute;
- PDlg^.Done;
- end;
-
- procedure TEmployee.idExit(var Msg: TMessage);
- begin
- CloseDb(hdb, hCur);
- CloseWindow;
- end;
-
- procedure TEmployee.idFirstRec(var Msg: TMessage);
- begin
- GoTop(hCur, True);
- PostMessage(hWindow, wm_Display, 0, 0);
- end;
-
- procedure TEmployee.idLastRec(var Msg: TMessage);
- begin
- GoBottom(hCur, True);
- PostMessage(hWindow, wm_Display, 0, 0);
- end;
-
- procedure TEmployee.idNextRec(var Msg: TMessage);
- begin
- if not AtEOF(HCur) then
- begin
- GetNextRec(hCur);
- PostMessage(hWindow, wm_Display, 0, 0);
- end;
- end;
-
- procedure TEmployee.idPrevRec(var Msg: TMessage);
- begin
- if not AtBOF(HCur) then
- begin
- GetPrevRec(HCur);
- PostMessage(hWindow, wm_Display, 0, 0);
- end;
- end;
-
- procedure TEmployee.idNewRec(var Msg: TMessage);
- var
- NewRec: PRecordType;
- begin
- EnableControls;
- EnableMenuItem(GetMenu(HWindow), 0, mf_ByPosition or mf_Grayed);
- EnableMenuItem(GetMenu(HWindow), 1, mf_ByPosition or mf_Grayed);
- DrawMenuBar(HWindow);
- new(NewRec);
- ClearFields(NewRec);
- ChangeMode(AddMode);
- DisplayRecord(NewRec);
- EnableWindow(GetDlgItem(HWindow, IDOK), false);
- EnableWindow(GetDlgItem(HWindow, IDCancel), true);
- Dispose(NewRec);
- end;
-
- procedure TEmployee.idDelRec(var Msg: TMessage);
- var
- Rec: PRecordType;
- begin
- if BWCCMessageBox(HWindow, 'Delete this record?', 'Message',
- mb_YesNo or mb_IconQuestion) = idYes then
- begin
- DeleteRec(hCur);
- if GetRecordCount(hCur) = 0 then
- TableEmpty := true;
- GoTop(hCur, not TableEmpty);
- Postmessage(HWindow, wm_Display, 0, 0)
- end;
- end;
-
- procedure TEmployee.WMCommand(var Msg: TMessage);
- begin
- case Msg.wParam of
- IDE_FName,
- IDE_LName,
- IDE_Address1,
- IDE_Address2,
- IDE_City,
- IDE_State,
- IDE_Zip,
- IDE_HPhone,
- IDE_WPhone,
- IDE_EmployeeId,
- IDE_StartDate,
- IDE_EndDate,
- IDE_Department,
- IDE_Comments:
- begin
- if (HIWORD(Msg.lParam) = EN_UPDATE) then
- if Verified then
- case Mode of
- AddMode:
- begin
- EnableWindow(GetDlgItem(HWindow, idOK), true);
- EnableWindow(GetDlgItem(HWindow, idCancel), true)
- end;
- ModMode:
- begin
- EnableWindow(GetDlgItem(HWindow, id_SaveRec), true);
- EnableWindow(GetDlgItem(HWindow, id_UndoRec), true)
- end;
- end { case }
- else
- case Mode of
- AddMode:
- begin
- EnableWindow(GetDlgItem(HWindow, idOK), false);
- EnableWindow(GetDlgItem(HWindow, idCancel), true)
- end;
- ModMode:
- begin
- EnableWindow(GetDlgItem(HWindow, id_SaveRec), false);
- EnableWindow(GetDlgItem(HWindow, id_UndoRec), true)
- end;
- end;
- inherited WMCommand(Msg);
- end
- else
- inherited WMCommand(Msg);
- end;
- end;
-
- procedure TEmployee.OK(var Msg: TMessage);
- var
- CurrentRec: PRecordType;
- begin
- { Get the data from the main Window and put it into the record structure. }
- if TableEmpty then
- begin
- TableEmpty := false;
- DisableControls;
- end;
- New(CurrentRec);
- GetRec(CurrentRec^);
- { Insert the record into the table }
- if AddRecord(hCur, CurrentRec, true) = DBIERR_NONE
- then begin
- ChangeMode(ModMode);
- PostMessage(HWindow, wm_Display, 0, 0);
- EnableMenuItem(GetMenu(HWindow), 0, mf_ByPosition or mf_Enabled);
- EnableMenuItem(GetMenu(HWindow), 1, mf_ByPosition or mf_Enabled);
- DrawMenuBar(HWindow);
- end { then }
- else
- BWCCMessageBox(HWindow, 'Record could not be added', 'Error', mb_Ok);
-
- dispose(CurrentRec);
- end;
-
- procedure TEmployee.IdOrder(var Msg: TMessage);
- begin
- if Application^.ExecDialog(New(POrderDialog, Init)) = ID_OK then
- PostMessage(hWindow, wm_Display, 0, 0);
- end;
-
- procedure TEmployee.IdSearch(var Msg: TMessage);
- begin
- if Application^.ExecDialog(New(PSearchDialog, Init)) = ID_OK then
- begin
- GetNextRec(hCur);
- PostMessage(hWindow, wm_Display, 0, 0);
- end
- else
- begin
- if AtBof(hCur) = True then
- begin
- PostMessage(hWindow, wm_Display, 0, 0);
- end;
- end;
- end;
-
- procedure TEmployee.IdSaveRec(var Msg: TMessage);
- var
- CurrentRec: PRecordType;
- begin
- { Get the data from the main Window and put it into the record structure. }
- New(CurrentRec);
- GetRec(CurrentRec^);
- { Insert the record into the table }
- AddRecord(hCur, CurrentRec, false);
- PostMessage(HWindow, wm_Display, 0, 0);
- dispose(CurrentRec);
- EnableMenuItem(GetMenu(HWindow), 0, mf_ByPosition or mf_Enabled);
- EnableMenuItem(GetMenu(HWindow), 1, mf_ByPosition or mf_Enabled);
- DrawMenuBar(HWindow);
- end;
-
- procedure TEmployee.idUndoRec(var Msg: Tmessage);
- var
- l: longint;
-
- begin
- SendMessage(HWindow, wm_Display, 0, 0);
- EnableWindow(GetDlgItem(HWindow, id_SaveRec), false);
- EnableWindow(GetDlgItem(HWindow, id_UndoRec), false);
- setfocus(GetDlgItem(HWindow, IDE_FName));
- PostMessage(GetDlgItem(HWindow, IDE_FName), em_SetSel, 1, MakeLong(0, word(-1)));
- end;
-
-
- procedure TEmployee.Cancel(var Msg: TMessage);
- var
- CurrentRec: PRecordType;
- begin
- New(CurrentRec);
- if TableEmpty then
- DisableControls
- else
- GetData(hCur, CurrentRec);
- ClearFields(CurrentRec);
- DisplayRecord(CurrentRec);
- dispose(CurrentRec);
- ChangeMode(ModMode);
- EnableMenuItem(GetMenu(HWindow), 0, mf_ByPosition or mf_Enabled);
- EnableMenuItem(GetMenu(HWindow), 1, mf_ByPosition or mf_Enabled);
- DrawMenuBar(HWindow);
- end;
-
- procedure TEmployee.WMClose(var Msg: TMessage);
- begin
- CloseDb(hdb, hCur);
- CloseWindow;
- end;
-
- procedure TEmployee.wmDisplay(var Msg: TMessage);
- var
- Rec: PRecordType;
- begin
- if TableEmpty then
- begin
- DisableCommand(id_PrevRec);
- DisableCommand(id_FirstRec);
- DisableCommand(id_NextRec);
- DisableCommand(id_LastRec);
- DisableControls;
- Rec := new(PRecordType);
- ClearFields(Rec);
- DisplayRecord(Rec);
- dispose(Rec);
- end
- else
- begin
- EnableControls;
- Rec := new(PRecordType);
- GetData(hCur, Rec);
- DisplayRecord(Rec);
-
- { Only one record exists in table }
- if (AtEOF(HCur) and AtBOF(hCur))then
- begin
- DisableCommand(id_PrevRec);
- DisableCommand(id_FirstRec);
- DisableCommand(id_NextRec);
- DisableCommand(id_LastRec);
- DisableCommand(id_SaveRec);
- end
- else { At beginning of file with more than one record. }
- begin
- if (AtBOF(HCur) and not AtEOF(hCur))then
- begin
- DisableCommand(id_PrevRec);
- DisableCommand(id_FirstRec)
- end
- else
- begin
- EnableCommand(id_PrevRec);
- EnableCommand(id_FirstRec)
- end;
-
- { At end of file with more than one record }
- if (AtEOF(HCur) and not AtBOF(hCur))then
- begin
- DisableCommand(id_NextRec);
- DisableCommand(id_LastRec);
- end
- else
- begin
- EnableCommand(id_NextRec);
- EnableCommand(id_LastRec);
- end;
- end;
-
- { Disable the buttons and menu options for Undo and Commit and set focus to
- / first name}
-
- DisableCommand(id_SaveRec);
- DisableCommand(id_UndoRec);
- Dispose(Rec);
- end { else }
- end;
-
- procedure TEmployeeApp.InitMainWindow;
- begin
- MainWindow := New(PEmployee, Init);
- end;
-
- begin
- EmployeeApp.Init(AppName);
- EmployeeApp.Run;
- EmployeeApp.Done;
- end.
-