home *** CD-ROM | disk | FTP | other *** search
/ Total C++ 2 / TOTALCTWO.iso / borland / 32addres.pak / ADR_UTIL.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  7KB  |  201 lines

  1. // BDE32 3.x - (C) Copyright 1996 by Borland International
  2.  
  3. #include "address.h"
  4.  
  5. //======================================================================
  6. //  Name:   WinMsg(Msg, TypeMsg, TypeBtn);
  7. //
  8. //  Input:  pMsg - The message to display.
  9. //          TypeMsg - The type of messagebox to use (i.e. Stop,
  10. //          Information,
  11. //          TypeBtn - The buttons to use (i.e. Yes, No, OK, ...)
  12. //
  13. //  Return: Response from the user.
  14. //
  15. //  Description:    Display a message box & return a value representing
  16. //                  the button the user pressed. Standard windows input is
  17. //                  required for the type of message, and button(s), to use.
  18. //======================================================================
  19. UINT16
  20. WinMsg (pCHAR pMsg, UINT TypeMsg, UINT TypeBtn)
  21. {
  22.     return (UINT16)MessageBox(hMainWnd, (LPSTR) pMsg,
  23.                               (LPSTR)"AddressBook Manager",
  24.                               (UINT) TypeBtn | TypeMsg | MB_APPLMODAL);
  25. }
  26.  
  27. //======================================================================
  28. //  Name:   ChangeEntryMode(hCur);
  29. //
  30. //  Input:  hCur    - Handle to the cursor
  31. //
  32. //  Return: None.
  33. //
  34. //  Description:    Swap the data entry mode. This will either switch from
  35. //                  "modify a record" to "add a record," or visa-versa.
  36. //======================================================================
  37. void
  38. ChangeEntryMode (hDBICur hCur)
  39. {
  40.     UINT16  iShow1;
  41.     UINT16  iShow2;
  42.     UINT16  iShow3;
  43.     char    szString[150];
  44.  
  45.     if (NewRecMode)
  46.     {
  47.         // Change the mode flag
  48.         NewRecMode = FALSE;
  49.  
  50.         // Show the startup resources
  51.         iShow1 = SW_SHOW;
  52.  
  53.         // Hide the OK and Cancel buttons
  54.         iShow2 = SW_HIDE;
  55.  
  56.         // Enable the menu options
  57.         iShow3 = MF_ENABLED;
  58.     }
  59.     else
  60.     {
  61.         // Change the mode flag
  62.         NewRecMode = TRUE;
  63.  
  64.         // Hide the startup resources
  65.         iShow1 = SW_HIDE;
  66.  
  67.         // Show the OK and Cancel buttons
  68.         iShow2 = SW_SHOW;
  69.  
  70.         // Disable the menu options
  71.         iShow3 = MF_GRAYED;
  72.     }
  73.  
  74.     // These resources are shown when the app starts
  75.     ShowWindow(GetDlgItem(hMainWnd, ID_ADD_REC), iShow1);
  76.  
  77.     // These menu options are enabled when the app starts
  78.     EnableMenuItem(GetMenu(hMainWnd), ID_ADD_REC, iShow3);
  79.     EnableMenuItem(GetMenu(hMainWnd), ID_NEW, iShow3);
  80.     EnableMenuItem(GetMenu(hMainWnd), ID_OPEN, iShow3);
  81.  
  82.     // Check if the table is empty
  83.     if((AtBOF(hCur) && AtEOF(hCur)))
  84.     {
  85.         iShow3 = MF_GRAYED;
  86.     }
  87.  
  88.     ShowWindow(GetDlgItem(hMainWnd, ID_DEL_REC), iShow1);
  89.     ShowWindow(GetDlgItem(hMainWnd, ID_FIRST_REC), iShow1);
  90.     ShowWindow(GetDlgItem(hMainWnd, ID_PREV_REC), iShow1);
  91.     ShowWindow(GetDlgItem(hMainWnd, ID_NEXT_REC), iShow1);
  92.     ShowWindow(GetDlgItem(hMainWnd, ID_LAST_REC), iShow1);
  93.     ShowWindow(GetDlgItem(hMainWnd, ID_MOD_REC), iShow1);
  94.     ShowWindow(GetDlgItem(hMainWnd, ID_UNDO_REC), iShow1);
  95.     ShowWindow(GetDlgItem(hMainWnd, ID_ORDER), iShow1);
  96.     ShowWindow(GetDlgItem(hMainWnd, ID_SEARCH), iShow1);
  97.     ShowWindow(GetDlgItem(hMainWnd, ID_RANGE), iShow1);
  98.     ShowWindow(GetDlgItem(hMainWnd, IDS_DATABASE_HDR), iShow1);
  99.  
  100.  
  101.     EnableMenuItem(GetMenu(hMainWnd), ID_FIRST_REC, iShow3);
  102.     EnableMenuItem(GetMenu(hMainWnd), ID_PREV_REC, iShow3);
  103.     EnableMenuItem(GetMenu(hMainWnd), ID_NEXT_REC, iShow3);
  104.     EnableMenuItem(GetMenu(hMainWnd), ID_LAST_REC, iShow3);
  105.     EnableMenuItem(GetMenu(hMainWnd), ID_DEL_REC, iShow3);
  106.     EnableMenuItem(GetMenu(hMainWnd), ID_MOD_REC, iShow3);
  107.     EnableMenuItem(GetMenu(hMainWnd), ID_ORDER, iShow3);
  108.     EnableMenuItem(GetMenu(hMainWnd), ID_RANGE, iShow3);
  109.     EnableMenuItem(GetMenu(hMainWnd), ID_CLEAR_RANGE, iShow3);
  110.     EnableMenuItem(GetMenu(hMainWnd), ID_SEARCH, iShow3);
  111.     EnableMenuItem(GetMenu(hMainWnd), ID_UNDO_REC, iShow3);
  112.  
  113.     // These resources need to be disabled while in add record mode
  114.     EnableWindow(GetDlgItem(hMainWnd, ID_ORDER), !NewRecMode);
  115.     EnableWindow(GetDlgItem(hMainWnd, ID_RANGE), !NewRecMode);
  116.     EnableWindow(GetDlgItem(hMainWnd, ID_SEARCH), !NewRecMode);
  117.  
  118.     // These resources are hidden when the application starts
  119.     ShowWindow(GetDlgItem(hMainWnd, IDOK), iShow2);
  120.     ShowWindow(GetDlgItem(hMainWnd, IDCANCEL), iShow2);
  121.     EnableWindow(GetDlgItem(hMainWnd, IDCANCEL), NewRecMode);
  122.     EnableWindow(GetDlgItem(hMainWnd, IDOK), NewRecMode);
  123.  
  124.     if(NewRecMode)
  125.     {
  126.         LoadString(hInst, IDS_MAIN, szString, 150);
  127.         SetDlgItemText(hMainWnd, IDS_NEW_REC_DESC, (pCHAR)szString);
  128.     }
  129.     ShowWindow(GetDlgItem(hMainWnd, IDS_NEW_REC_DESC), iShow2);
  130. }
  131.  
  132. //=====================================================================
  133. //  Function:
  134. //          MakeFullPath (pszDirectory, pszRelativeDirectory)
  135. //
  136. //  Input:  pszDirectory            - String to contain the path to the tables
  137. //                                      directory.
  138. //          pszRelativeDirectory    - String which contains the relative offset
  139. //                                      from the current directory.
  140. //
  141. //  Return: int     - If the directory exists
  142. //
  143. //  Description:
  144. //          This function is used to get the fully qualified path to
  145. //          the directory which will contain the tables. This function
  146. //          will only work when pszRelativeDirectory contains either "."
  147. //          an absolute path, or <..\\..>\\TABLES.
  148. //=====================================================================
  149. int
  150. MakeFullPath (pCHAR pszDirectory, pCHAR pszRelativeDirectory)
  151. {
  152.     int     iExists;    // Does the directory exist?
  153.     int     iLen;       // Length of the path
  154.     int     iLoop;      // Loop counter
  155.     int     iDepth;
  156.     
  157.     // Assume absolute path if second character is a ':'
  158.     if (pszRelativeDirectory[1] == ':')
  159.     {
  160.         strcpy(pszDirectory, pszRelativeDirectory);
  161.     }
  162.     else if (!strcmp(pszRelativeDirectory, "."))
  163.     {
  164.         // Get the current working directory
  165.         getcwd(pszDirectory, DBIMAXPATHLEN);
  166.     }
  167.     else
  168.     {
  169.         // Get the current working directory
  170.         getcwd(pszDirectory, DBIMAXPATHLEN);
  171.         
  172.         iLen = strlen(pszDirectory);
  173.  
  174.         // Remove relative parts of the path.
  175.         iDepth = 0;
  176.         while (!strncmp(&pszRelativeDirectory[iDepth * 3], "..\\", 3))
  177.         {
  178.             for (iLoop = iLen; iLoop > -1; iLoop = iLoop - 1)
  179.             {
  180.                 if (pszDirectory[iLoop] == '\\')
  181.                 {
  182.                     break;
  183.                 }
  184.             }
  185.             iLen = iLoop - 1;
  186.             iDepth++;
  187.         }
  188.  
  189.         // Copy the 'TABLES' directory to form the full path to the tables.
  190.         //   Need to move szDirectory past the '\\' and szTblDirectory
  191.         //   past the '..\\'.
  192.         strcpy(&pszDirectory[iLoop+1], &pszRelativeDirectory[(3 * iDepth)]);
  193.     }
  194.  
  195.     // Check if the directory exists
  196.     iExists = access(pszDirectory, 00);
  197.  
  198.     return iExists;
  199. }
  200.  
  201.