home *** CD-ROM | disk | FTP | other *** search
/ Total C++ 2 / TOTALCTWO.iso / vb5.0 / tools / unsupprt / calendar / resload.cls < prev    next >
Text File  |  1997-01-16  |  4KB  |  100 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "ResLoader"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = False
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = False
  10. '----------------------------------------------------------------------
  11. ' ResLoader.cls
  12. '----------------------------------------------------------------------
  13. ' Implementation file for the ResLoader class which is responsible
  14. ' for locating and loading resources such as strings and images.
  15. '----------------------------------------------------------------------
  16. ' Copyright (c) 1996, Microsoft Corporation
  17. '              All Rights Reserved
  18. '
  19. ' Information Contained Herin is Proprietary and Confidential
  20. '----------------------------------------------------------------------
  21.  
  22. Option Explicit
  23.  
  24. Private Const ERR_BASE = vbObjectError
  25.  
  26. '======================================================================
  27. ' Public Enumerations
  28. '======================================================================
  29. Public Enum ErrorIDs
  30.     errPropValue = ERR_BASE + 1
  31.     errPropValueRange = ERR_BASE + 2
  32.     errCantChange = ERR_BASE + 3
  33. End Enum 'ErrorIDs
  34.  
  35. '======================================================================
  36. ' Public Methods
  37. '======================================================================
  38.  
  39. '----------------------------------------------------------------------
  40. ' LoadResString()
  41. '----------------------------------------------------------------------
  42. ' Purpose:  Loads the desired string matching the ID passed in.
  43. ' Inputs:   ID of string to load
  44. ' Outputs:  none
  45. '----------------------------------------------------------------------
  46. Public Function LoadResString(StringID As Long) As String
  47.     LoadResString = VB.LoadResString(StringID)
  48. End Function 'LoadResString
  49.  
  50. '----------------------------------------------------------------------
  51. ' RaiseUserError()
  52. '----------------------------------------------------------------------
  53. ' Purpose:  Loads an error string matching the ID passed in and matches
  54. '           parameter values passed in with markers in the string
  55. ' Inputs:   ID of string to load, parameters to stuff
  56. ' Outputs:  none
  57. '----------------------------------------------------------------------
  58. Public Sub RaiseUserError(ErrorID As ErrorIDs, Params As Variant)
  59.     Dim sErrText As String      'raw error string
  60.     Dim nLBound As Long         'lbound of the param array
  61.     Dim nUBound As Long         'ubound of the param array
  62.     Dim nPos As Long            'position marker in the string
  63.     Dim ct As Long              'loop counter
  64.     
  65.     'get the raw string
  66.     sErrText = LoadResString(ErrorID - ERR_BASE)
  67.     
  68.     'The Params() array is a one-dimentional, zero-based array of
  69.     'variant values created by using the Array function in VBA.
  70.     'the values in this must be coerceable to strings.
  71.     
  72.     'Param markers are signalled by a "%<num>" format where the <num>
  73.     'is the number of the param.  This routine will match the first
  74.     'element of the array to "%1", the second to "%2" and so on.
  75.     
  76.     'This routine replaces these param markers with the supplied
  77.     'in the param array and then displays the resulting error message.
  78.     'Extra params are ignored and if less params are passed in than
  79.     'param markers, the unreplaced markers will stay as is.
  80.     
  81.     'get UBound and LBound of the array
  82.     nLBound = LBound(Params)
  83.     nUBound = UBound(Params)
  84.     
  85.     'loop over all the parameters
  86.     For ct = nLBound To nUBound
  87.         'find the param marker
  88.         nPos = InStr(sErrText, "%" & (ct + 1))
  89.         
  90.         If nPos > 0 Then
  91.             'replace the param marker with the param value
  92.             sErrText = Left$(sErrText, nPos - 1) & _
  93.                         Params(ct) & Mid$(sErrText, nPos + 2)
  94.         End If 'found the param
  95.     Next ct
  96.     
  97.     'finally, raise the error
  98.     Err.Raise ErrorID, "MSVBCalendar", sErrText
  99. End Sub 'RaiseUserError()
  100.