// BDE - (C) Copyright 1994 by Borland International #include #include #include #include #include #include #include #include #include #include // for date structure and getdate function #include #include #include #include #include "id_defs.h" #include "macro.h" // Macro for Subclassing the edit control. #define SubClassWindow(hWnd, lpfn) \ ((WNDPROC)SetWindowLong((hWnd), GWL_WNDPROC, \ (LPARAM)(WNDPROC)(lpfn))) // Define used for Microsoft compilers #if defined(_MSC_VER) #define farmalloc(parm) _fmalloc(parm) #define farfree(parm) _ffree(parm) // Leave it blank on purpose as VC++ minds having far declared. #define ABFAR #endif #if defined(__TURBOC__) && defined(_Windows) #define ABFAR far #endif // Definitions needed for engine.c #define NAMELEN 20 #define ADDRESSLEN 40 #define CITYLEN 20 #define STATELEN 3 #define ZIPLEN 13 #define PHONELEN 21 #define DATELEN 11 #define COMMENTLEN 300 #define TOP 0 #define BOTTOM 2 #define PREV_REC -1 #define NEXT_REC 1 #define RANGEERROR 2 #define STRLEN 256 #define MAXFILENAMELEN 256 #define MAXFILETITLELEN 256 #define MAXPASSLEN 30 #define MAXALIAS 256 #define szINTERBASE "INTERBASE TABLE" #define szSYBASE "SYBASE" #define szORACLE "ORACLE" #define szPERSONAL "Personal" #define szBUSINESS "Business" #define NEW 1 #define OPEN 2 #define MAXCHARLEN 60000L #define FILEHANDLESNEEDED 40 typedef UINT (CALLBACK* FARHOOK)(HWND, UINT, WPARAM, LPARAM); // Externs for global data extern HINSTANCE hInst; extern HWND hMainWnd; extern HWND hErrorWnd; extern BOOL NewRecMode; extern BOOL RangeSet; extern WNDPROC _wpOrigWndProc; extern FARHOOK lpfnFileHook; extern UINT16 iMSGFileOK; extern BOOL bIsServer; // Variables for table creation extern const UINT16 uNumFields; // used in engine.c extern const UINT16 uNumIndexes; // used in engine.c extern const UINT16 uNumRecs; // Number of records to insert // The name of the table to use and the directory of where to put it. extern const char far szTblName[]; extern char far szTblDirectory[]; extern char far szPrivDirectory[]; extern const char far szTblType[]; // Structures used throughout the code. extern FLDDesc ABFAR fldDesc[]; extern IDXDesc ABFAR idxDBDesc[]; extern IDXDesc ABFAR idxIBPDDesc[]; // Variables for ENGINE.C typedef struct { CHAR FName[NAMELEN]; CHAR LName[NAMELEN]; CHAR Spouse[ADDRESSLEN]; CHAR Addrs1[ADDRESSLEN]; CHAR Addrs2[ADDRESSLEN]; CHAR City[CITYLEN]; CHAR State[STATELEN]; CHAR Zip[ZIPLEN]; CHAR Phone1[PHONELEN]; CHAR Phone2[PHONELEN]; CHAR Date1[DATELEN]; CHAR Comment[COMMENTLEN]; } RecordType; // Structures for OpenFile dialog. typedef struct { OPENFILENAME ofn; CHAR szFile[MAXFILENAMELEN]; CHAR szFileTitle[MAXFILETITLELEN]; CHAR szDirectory[DBIMAXPATHLEN + 1]; CHAR szTitle[DBIMAXNAMELEN]; }FOCHUNK; typedef FOCHUNK FAR *LPFOCHUNK; typedef struct { CHAR Password[MAXPASSLEN]; CHAR Alias[DBIMAXTBLNAMELEN]; CHAR Database[DBIMAXTBLNAMELEN]; }PASSSTRUCT; typedef struct { phDBIDb phDb; UINT16 uType; }ABCREATESTRUCT; typedef ABCREATESTRUCT FAR *pCS; typedef struct { DBINAME szTagName; DBIKEYEXP szKeyExp; UINT16 iFldsInKey; DBIKEY aiKeyFld; DBIKEY aiKeyLen; }ABIDXDESC; typedef ABIDXDESC FAR *pABIDXDESC; typedef struct { phDBICur phCur; hDBIDb hDb; }ABHANDLES; typedef ABHANDLES FAR *pAbHandles; typedef struct { CHAR FieldName[DBIMAXNAMELEN + 2]; }FIELDNAME; typedef FIELDNAME FAR *pFIELDName; // Function prototypes for ADR_MAIN.C BOOL InitApp(int nCmdShow); long FAR _pascal _export MainWndProc(HWND, UINT, UINT, LONG); BOOL FillStruct(RecordType *, UINT16, pCHAR); BOOL DisplayTable(hDBICur hCur); BOOL TableExist(pCHAR); BOOL FillTable (hDBICur hCur, pCHAR ABType); BOOL DispRec(RecordType *); DBIResult MoveRec (hDBICur hCur, INT16); void CheckButtons(hDBICur hCur); void SetupEdits(void); BOOL SaveRec(hDBICur hCur, BOOL); BOOL GetRec(RecordType *); BOOL DeleteRecord(hDBICur hCur); void SetControl(UINT16, BOOL); UINT16 FillDropList (HWND, UINT16, UINT16, pABIDXDESC, pCHAR); void SetFNameFocus(void); BOOL ClearDlg(void); BOOL Varified(void); BOOL CanContinue(pCHAR, UINT16); void EndNewRec(hDBICur hCur); DBIResult SetDefaultDate (void); void FillFieldList(HWND); void GetField(RecordType *, pCHAR, UINT16); void PutField(RecordType *, pCHAR, UINT16); DBISearchCond GetCond(HWND); void FillAliasCBBox(pDBDesc pAliases, UINT32 uNumAliases, UINT16 CBId, HWND hWnd); BOOL FillFileList (HWND hWnd, UINT16 LBId, hDBIDb hDb); void SetFieldNames(hDBICur hCur); pCHAR Proper(pCHAR String); void SetAll(BOOL bAction); BOOL HourGlassCursor (BOOL turnOn); // Function prototypes for ADR_UTIL.C UINT16 WinMsg(pCHAR, UINT16, UINT16); void ChangeEntryMode(hDBICur hCur); int MakeFullPath(pCHAR pszDirectory, pCHAR pszRelativeDirectory); // Functions for ENGINE.C DBIResult DbInit(void); DBIResult DbExit(void); DBIResult CreateTable(hDBIDb hDb, phDBICur phCur, pCHAR); DBIResult AddRecord(hDBICur hCur, RecordType *, BOOL); DBIResult SetDate(pDATE Date, pCHAR pszString); DBIResult GetTable(hDBIDb hDb, phDBICur phCur); DBIResult CloseDb(phDBIDb phDb); DBIResult GetData(hDBICur hCur, RecordType *); DBIResult FillRec(hDBICur hCur, pBYTE, RecordType *); DBIResult GoTop(hDBICur hCur, BOOL bMoveRec); DBIResult GetNextRec(hDBICur hCur); DBIResult GetPrevRec(hDBICur hCur); DBIResult GoBottom(hDBICur hCur, BOOL bMoveRec); DBIResult SetIndex(phDBICur phCur, pCHAR szTagName); DBIResult SetupIndex(phDBICur phCur, pCHAR szName, pCHAR szTagName, UINT16 IndexId); BOOL AtEOF(hDBICur hCur); BOOL AtBOF(hDBICur hCur); DBIResult FillIndexStr(hDBICur hCur, hDBIDb hDb, pABIDXDESC *pIndexes, pCHAR pszActIdx, pUINT16 puIndexes); DBIResult DeleteRec(hDBICur hCur); DBIResult SetRange(RecordType *pHighRec, RecordType *pLowRec, BOOL bHighInclude, BOOL bLowInclude, hDBICur hCur, BOOL bHighEmpty, BOOL bLowEmpty); DBIResult FillBuf(hDBICur hCur, pBYTE pRecBuf, RecordType* pString); DBIResult Search(hDBICur hCur, DBISearchCond eCond, BOOL bDirect, UINT16 iFlds, UINT16 iLen, RecordType *pKey); DBIResult ResetRange(hDBICur hCur); DBIResult DateEncode(UINT16 mon, UINT16 day, UINT16 year, pDATE pTempDate); DBIResult GetDateFormat(pFMTDate pDate); DBIResult GetDirectory(hDBIDb hDb, pCHAR pszBuffer); DBIResult FillAliasStr(pDBDesc *Alias, pUINT32 plNumAliases); DBIResult OpenDB(phDBIDb phDb, pCHAR pszTableType, pCHAR pszPassword, pCHAR pszAlias); DBIResult DisplayError(DBIResult rslt, pCHAR* pMsg); DBIResult GetFieldInfo(pCHAR pFld, pUINT16 FldNum, pUINT16 FldLen, hDBICur hCur, UINT16 iFields); void StripChar (pCHAR Dest, pCHAR Src, CHAR Char); DBIResult GetMdxName(hDBICur hCur, pCHAR MdxName); DBIResult GetIndexDescs(hDBIDb hDb, pIDXDesc AllDesc); DBIResult GetFldNames(hDBICur hCur, pFIELDName pFieldNames); DBIResult CloseTable(phDBICur pCur); DBIResult CheckTable(hDBICur hCur, pBOOL pbFlag); DBIResult GetTblType(hDBICur hCur, pCHAR szTableType); DBIResult InitIndex1(phDBICur phCur); DBIResult GetTableList(hDBIDb hDb, phDBICur phTblCur); DBIResult GetNextTblRec(hDBICur hTblCur, pTBLBaseDesc pbaseDesc); DBIResult DeleteTable(phDBICur phCur, hDBIDb hDb, pCHAR TblName, pCHAR TblType); // Functions for ADRCMDLG.C BOOL FAR _pascal _export PasswdDlg (HWND, WORD, WORD, LONG); BOOL FAR _pascal _export TypeDlg (HWND, WORD, WORD, LONG); BOOL FAR _pascal _export FileHook(HWND, UINT, WPARAM, LPARAM); void InitializeStruct(LPSTR, pCS); void ProcessCDError(UINT32 dwErrorCode); BOOL ChkExt(pCHAR szFileName); BOOL IsStandard(pCHAR szAlias, pDBDesc pAliases, UINT32 uNumAliases); void SetupDialog(HWND hDlg, INT16 Action); // Functions for ADR_DLGS.C long FAR _pascal _export EditSubClassProc(HWND, WORD, WORD, LONG); BOOL FAR _pascal _export AboutDlg(HWND, WORD, WORD, LONG); BOOL FAR _pascal _export OrderDlg(HWND, WORD, WORD, LONG); BOOL FAR _pascal _export RangeDlg(HWND, WORD, WORD, LONG); BOOL FAR _pascal _export SearchDlg(HWND, WORD, WORD, LONG);