home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 February / PCWK0296.iso / po7_win / object10 / posadv.cpp < prev    next >
C/C++ Source or Header  |  1994-10-17  |  2KB  |  78 lines

  1. /* Copyright (c) Oracle Corporation 1994.  All Rights Reserved */
  2.  
  3. /*
  4.   DESCRIPTION
  5.       position advisory class.  this subclass of OAdvisory will
  6.       keep track of the absolute position within a dynaset
  7.   MODIFIED
  8.       kwhitley    10/18/94    Created
  9. */
  10.  
  11. #ifndef POSADV_ORACLE
  12. #include "posadv.h"
  13. #endif
  14.  
  15. /*
  16.     Please see the Workbook document for a discussion of this class
  17. */
  18.  
  19. PosAdvise::PosAdvise(void)
  20. {
  21.     m_position = -1;  // position is not yet defined
  22. }
  23.  
  24. PosAdvise::~PosAdvise(void)
  25. {
  26. }
  27.  
  28. long PosAdvise::GetPosition(void) const
  29. {
  30.     return(m_position);
  31. }
  32.  
  33. oboolean PosAdvise::ActionRequest(int movekind)
  34. {
  35.     // we allow only simple navigation.  otherwise our
  36.     //   bookkeeping might get confused
  37.     
  38.     switch (movekind)
  39.     {
  40.     case OADVISE_MOVE_NEXT:
  41.     case OADVISE_MOVE_PREV:
  42.     case OADVISE_MOVE_FIRST:
  43.     case OADVISE_MOVE_LAST:
  44.         return(TRUE);
  45.     default:
  46.         return(FALSE);
  47.     }
  48. }
  49.  
  50. void PosAdvise::ActionNotify(int movekind)
  51. {
  52.     // depending on what the action was, calculate
  53.     //   a new position
  54.     switch (movekind)
  55.     {
  56.     case OADVISE_MOVE_NEXT:
  57.         if (m_position != -1)
  58.             m_position++;
  59.         break;
  60.     case OADVISE_MOVE_PREV:
  61.         if (m_position != -1)
  62.             m_position--;
  63.         break;
  64.     case OADVISE_MOVE_FIRST:
  65.         m_position = 0;
  66.         break;
  67.     case OADVISE_MOVE_LAST:
  68.         m_position = GetDynaset.GetRecordCount() - 1;
  69.         break;
  70.     default:
  71.         // no telling where we are now
  72.         m_position = -1;
  73.         break;
  74.     }
  75.     
  76.     return;
  77. }
  78.