Download latest version here
      Version 3.87 Gold -  24 May 2021 
      
      
         General
 General
      Clarion 11.1 binary compatible release.
      
Version 3.86 Gold - 12 October 2018 
      
         General
 General
      
        - Clarion 11 binary compatible release.
Version 3.84 Gold - 
        25 February 2015
      
         General
 General
      
        - Clarion 10 binary compatible release.
Version 3.83 Gold - 
        24 March 2014
      
         General
 General
      
        - Clarion 9.1 binary compatible release.
Version 3.82 Gold - 
        29 August 2013
      
         General
 General
      
        - Clarion 9 10324 binary compatible release.
Version 3.81 Gold - 
        17 July 2013
      
         General
 General
      
        - Work around for change in IReportGenerator interface in Clarion9
          (includes more GetFileName method added to 10209). 
Version 3.80 Gold - 
        16 May 2013
      
         General
 General
      
        - Work around for change in IReportGenerator interface in Clarion9.
          Additional file oiABPROIVersionSpecific.clw (different for C8 and
          below to C9 and up) shipped.
- OfficeInsideStub.tpw file made non-version specific (now that
          Clarion5.5 is no longer supported).
Version 3.79 Gold - 
        1 May 2013
      
         General
 General
      
        - Support in template for Clarion 9 support.
Version 3.78 Gold - 
        26 April 2013
      
         General
 General
      
        - Build to include Clarion 9 support.
 
      Version 3.77 Gold - 
        26 October 2012
      
         General
 General
      
        - Template change: Priority of some embed points altered slightly to
          prevent clashes with other templates.
- Template change: Cater for renamed RTFControl template.
Version 3.76 Gold - 
        15 June 2012
      
         General
 General
      
        - Fixed: Compile correcct PlugitModuleName DLL (dependant on version
          of Clarion used).
- Included claoff.dll compiled for 7.3 (as (7.3 dll is no longer
          compatible with C8)
- NOTE: As of 3.21, Clarion 6.1 is no longer supported in Office
          Inside.
  
      Version 3.75 Beta - 
        21 February 2012
      
         General
 General
      
        - Fixed: An error in the template
          which result in the OfficeInside TakeEvent embed code being orphaned.
- Fixed: oiObject.GetChildEx failing
          because the call to oiObject.FromVariant was not passing the child
          object.
- Fixed: GPF when calling
          oiObject.GetChild or GetChildEx with invalid objects or Null
          parameters.
- Added: oiObject.ErrorTrap method
          which improves error handling and translates COM errors.
- Added: Passing objects as
          parameters when calling methods using the oiObject class.
- Added: Demonstration of adding
          Page Breaks to the Generics example. This calls the
          msExcel.AddPageBreak method (in msOffice.clw in the Generic folder).
          It demonstrates working with Sheets, retrieving a collection
          (Sheet.PageBreaks), getting a child object where the GetChild call
          requires multiple parameters (Calling GetChildEx to get Sheet.Range),
          and calling methods which take multiple parameters (using the
          self.Params object). It also demonstrates calling a method which takes
          another object as a parameter - PageBreaks.Add(), which takes a Range
          parameter
 
 
      Version 3.74 Beta - 
         10 February 2012
      
         General
 General
      
        - Added: oiObject.InitFromID
          method. Primarily for internal use, provides intialization of objects
          by ID rather than name.
- Fixed: The oiExcel.GetWorkbooks()
          method moved to using the new InitFromID and now correctly returns the
          Workbooks collection.
- Added: msExcel.OpenXML
          Procedure(string name, long loadOption=2). This is demonstrated in the
          Generics example application. This method
          can be used to open an XML file in Excel and import the data into
          columns, with field names headers etc.
 
      Version 3.73 Beta - 
         09 January 2012
      
        - Regression fix introduced in 3.72 - in Clarion 7.3 and up was trying
          to use C70OFF.DLL instead of CLAOFF.DLL
- Regression fix introduced in 3.72 - in Clarion 7.3, where
          FileExporer was used in the same app in local mode, there were
          duplicate symbols.
Version 3.72 Beta - 
         06 January 2012
      
         General
 General
      
        - Added: New and updated methods to
          the classes provided with the Generics example application:
          
            - msWord.SetStyle - sets the style of the current
              selection
- Updated the msOutlook.NewMail method . Supports
              getting the Attachments object for a mail item and adding new
              attachments; setting the HTML body as well as the text body, and
              auto saving a draft:
 
 msOutlook.NewMail Procedure (<string
              subject>, <string mailTo>, <string body>,
              <string htmlBody>, <*msAttachmentsList attachments>,
              bool autoSave=false)
 
- Added automated Outlook restart to the Generics
              example (this is already demonstrated in the oiMail
              example). This functionality detects the Quit event if the user
              exits Outlook while the application is automating it, and creates
              a new instance of Outlook for automation to continue functioning.
 
- Fixed: Incorrectly named export
          for the oiParams.Fetch method.
- Fixed: Generation errors in Legacy
          applications in Clarion 8.
- Fixed: The Editable Report output
          to for Word and Excel creating zero byte temp files.
        
           Excel
 Excel
      
      
         Word
        Word
      
        - Fixed: PrintOut
          method failing and not printing the document depending on the
          parameters passed.
 
       
       
      Version 3.70 Beta - 
         02 September 2011
      
         General
 General
      
        - Fixed: Error with Multi-Proj template
          settings for applications in C7.1 and up resulting in Duplicate Symbol
          errors.
- Updated: Removed verbose logging from
          the Excel editable report output class. 
- Fixed: Compile warning - The Generics
          example class msOutlook.Init not returning a value.
- Updated: The Generics example class
          msOutlook.SendReceiveAll to allow it to be called as a procedure
          (without checking the return value).
- Updated: The msOffice.clw and
          msOffice.inc files in the HTML Mail (FileExplorer) example.
- Note: Clarion 7.3 and 8 have a bug which
          causes Duplicate Symbol errors on the Construct@F11PWCOMINITER method
          when compiling in LIB mode. This has been reproduced and reported to
          SoftVelocity.
- Fixed: Typo in the Fetching
              and Saving Attachments section (the 
              GetMailAttachmentsQ method was incorrectly spelled).
- Added: Fetching
              and Saving Attachments section to the Contents
- Updated: The Outlook Contents section of
          the documentation
- Added: The Demo example now demonstrates
          retrieving a list of attachments for a message and saving all
          attachments to disk in the Outlook_ReadEmailFolders example procedure.
- Fixed: Template note adding the
          oiImpEx.clw to the project for C55 applications.
- Added: C55 and Legacy compatibility to
          the oiImpExcelEx class
- Added: C55 Legacy version of the
          ImportExport example
- Fixed: Incorrect Get statement in the
          ImportExport example.
 
      Version 3.66 Beta - 
        02 August 2011
      
         General
 General
      
        - Fixed: Missing files in the HTML Mail
          (FileExplorer) example.
- Added: New methods to the msOutlook
          class used in the Generics example which demonstrates the new
          functionality provided by Office Inside 3. The new code demonstrates
          how to trap Outlook events and how to automatically restart Outlook in
          the background if it is closed by the user.
          
            - Init() - calls the parent's Init method and
              stores the current thread number for event handling
- New event handling methods:
 EventItemSend Procedure (), derived
 EventNewMail Procedure (), derived
 EventReminder Procedure (), derived
 EventOptionsPagesAdd Procedure (), derived
 EventStartup Procedure (), derived
 EventQuit Procedure (), derived
- TakeEvent - handles events from the current
              thread
- OnQuit - traps the Quit event for Outlook and
              checks whether Outlook was closed by the object or the user. If
              the user closes Outlook it is re-initialized.
- RestartOutlook - Restarts Outlook in the
              background if the user closed the last Outlook window or
              inspector.
 
- Fixed: msOutlook.UpdateAttendees
          and msOutlook.AddAttendees where checking the
          optional parameters incorrectly
- Added: LegacyMail.app example to the
          Generics example directory. Identical to the Mail.app except that it
          is based on the Clarion rather than ABC template chain.
- Updated: Removed extraneous code from
          the Mail.app example (in the Generics folder).
 
      Version 3.65Beta - 
        2 June 2011
      
         General
 General
      
        - Fixed: The msOffice.clw and msOffice.inc
          files shipped with the Generics.app and Mail.app examples
          (Examples\OfficeInside\Generics\) were not included correctly in the
          last release.
 
      Version 3.64Beta - 
        1 June 2011
      
         General
 General
      
        - Improved: The GetOfficeVersion
          method now retrieves the version directly from the object and only
          falls back to reading from the registry in the case where this fails.
- Added: oiOffice.GetVersionFromRegistry
          method. This is equivilent to the older GetOfficeVersion method and
          retrieves the current version of Office using the registry. It also
          checks for the presence of the the Microsoft Office Compatibility pack
          when checking installed versions.
- Improved: All the Version.lib API
          functions are now loaded at runtime and version.lib is no longer
          linked into either the DLL or LIB. This ensures that OfficeInside does
          not conflict with other accessories that use these APIs.
 
           Excel
 
        Excel
      
        - Fixed: oiExcel.GetWorksSheets(*oiObject)
          not retrieving the Worksheets object correctly
 
         Outlook
 Outlook
      
        - Added: New HTML Email
          example. Demonstrates displaying the HTML version of Emails retrieved
          from Outlook using CapeSoft FileExplorer.
- Added: New Mail
          example (in the Generics directory). Use new code in the msOffice.clw
          and msOffice.inc files provided with the example:
          
            - New msOutlook.GetFilteredMail method retrieves
              all items in the specified folder using column restriction and
              optionally record filtering in 
- New msOutlook.MailByDate demonstrates using the
              mail filtering to retrieve mail that matches a date range
- New msOutlook.FindMail method demonstrates
              using Find and FindNext to retrieve mail that matches a filter
              expression.
- Demonstrates Restrict, SetSort,
              SetColumns, FirstItem, 
                NextItem, ResetColumns, FindItems, FindNext
              etc.
- Added benchmarking of the various approaches
              to filtering and retrieving mail. Test benchmark results with 806
              items in the Inbox:
              
                - Fetch all 806 items using SetColumns in
                  the msOutlook.GetFilteredMail example method
                  to optimize the record retrieval:
 
 1.74 seconds
 
- With Restrict to limit mail being fetched
                  to the desired range using the msOutlook.GetFilteredMail
                  example method:
 
 0.04 seconds
 
- Using FindItems and FindNext
                  to filter and fetch mail items (See the msOutlook.FindMail
                  example method):
 
 0.05 seconds
 
- Using the old GetMailItemsQ method to
                  fetch all items:
 
 9.55 seconds
 
 
 
- Fixed: The Restrict
          method now correctly restricts the Items collection for the current
          folder to the specified range.
- Added: UnRestrict
          method to remove the filter on the collection for the current folder
          set by calling Restrict.
- Added: SetSort method
          sets the sort order for a collection in Outlook (For example sets the
          order that Mail items are retrieved in based on a field such as
          Received Date).
- Fixed: NextItem method now correctly returns the
          child in all cases
- Added: Force parameter to the 
            GetItems method. By default this now returns the current
          Items collect on exists or retrieves the collection if it does not
          (and fetches the default Folder collections if required). The Force
          parameter allows the Items collect to always be retrieved, and one
          exists the current one is released first.
- Changed: The FindNextItem method is now
          named FindNext.
 
      
           Work in Process
 Work in Process
      
        - Added: New AddPageBreak
          method to the msExcel class in the Generics example. Demonstrates:
          
            - Using the Worksheets, ActiveSheet and Range object
- Passing an Object as a parameter to a Office method (this is a
              Work In Progress)
 
- Deprecated: oiBase.ToVariant
          method.
 
       
       
      Version 3.63Beta - 
        11 May 2011
      
         General
 General
      
        - Added: GetType and GetTypeName methods to retrieve the type of a
          Property and the description of that type.
- Fixed: Bug in the handling of Boolean values when converting to
          Variants in the PWVariantFactory class.
- Added: Documentation and example code for the GetType and
          GetTypeName
- Fixed: Incorrect equate for type handling
 
      Version 3.62Beta - 
        09 May 2011
      
         General
 General
      
        - Template update for Clarion 8 compatibility.
          Resolved unresolved externals and other errors im Clarion 8.
 
      Version 3.61Beta - 
        06 May 2011
      
         General
 General
      
        - Added: The Generics example now
          demonstrates populating a queue with mail using the standard
          GetMailItemsQ method as well as retrieving all individual mail
          properties using the oiObject class and displaying them on a window.
          The GetMailInfo method of the new msOutlook example class provides
          this functionality (see msOffice.clw in the Generics example folder).
- Added: Additional 
            documentation for oiObject and oiParams.
- Added: oiObject.Get()
          methods now handle multiple return types and internal conversion
          automatically. The returned variant type is read and an intelligent
          conversion is done on the passed type.
- Added: oiObject.SetBool method for setting a
          boolean value. 
- Added: oiObject.SetConst
          method for setting a value that should be set to one of a set of
          specified constants (this is the equivilent to calling Set()
          and passing it a Short, however it also allows equates and constant
          values to be passed.
- Added: oiParams.AddBool
          method to allow boolean values to be added to parameters being passed
          to a method with more clarity (rather than calling AddInt
          with the isBoolean set to True).
- Added: The AddString
          method now supports passing Constants (equates) and Shorts using the
          oiParam:Const and oiParam:Short values for the pType parameter
- Added: oiObject.Get(*short)
          and oiObject.GetProp(*short) methods.
- Added: oiObject.Set(*short) method.
- Added: Additional oiObject
          documentation, fixed missing anchors, documented new methods.
- Added: new msWord,
            msExcel and msOutlook classes,
          demonstrated in the Generic example (see the msOffice.inc
          and  msOffice.clw files in the Generics
          example folder). These classes demonstrate extending the functionality
          built in classes using oiObject. All the demonstration functionality
          that uses the oiObject class is now demonstrated in these classes,
          which can be reused and extended in your own applications.
- Added: Each of msWord,
           msExcel and msOutlook example
          classes are extensively documented in themsOffice.inc
          and msOffice.clw  files. The description
          for each method, along with each parameter, the return types and any
          additional comments are in the CLW file above each method.
- Added: msWord class methods:
          
            - GetObjects Procedure (), bool, virtual
 
- MergeFiles Procedure (FILE:queue
          filesQ), bool, virtual
- InsertFile Procedure (string
          fileName), bool, virtual
- PasteAndFormat Procedure (long
          formatType = oiw:FormatOriginalFormatting), bool, virtual
- NewDoc Procedure (<string
          template>, long newTemplate = oi:False, long
          documentType=oiw:NewBlankDocument, long visible=oi:True), bool,
          virtual
- GetCellValues Procedure
          (*WordTableCells cells, long tableNum = 1), bool, virtual
- Added: msExcel class methods:
- GetPageSetup Procedure (), bool,
          virtual
- AddNamedRange Procedure (string
          rangeName, string rangeValue), bool, virtual
- Added: msOutlook class methods:
- GetMailItem Procedure (string
          itemID), bool, virtual
- MoveMessage Procedure (string
          itemID, <string folderName>), bool, virtual
- NewMail Procedure (<string
          subject>, <string mailTo>, <string body>), bool,
          virtual
- SaveMailAs Procedure (string
          fileName, long mailFormat=oio:olMSG, bool openSavedFile=false), bool,
          virtual
- SetFileName Procedure (long
          mailFormat=oio:olMSG), string, virtual
- SendReceiveAll Procedure (), bool,
          virtual
- GetAttendees Procedure (<string
          itemID>), string, virtual
- UpdateAttendees Procedure (string
          attendeeName, <string itemID>), string, virtual
- AddAttendee Procedure (string
          attendeeName, <string itemID>, long busyStatus = oio:Busy, long
          requiredAttendee=oio:Required), string, virtual
- GetMailInfo Procedure
          (*mailInfoType mailInfo)
- SetBusy Procedure (long isBusy =
          oi:True), bool, virtual
- Added: the Conversion methods are now
          available for all of the Office application objectL
          
            - PicasToPoints procedure (long pPicas), long,
              name('PICASTOPOINTS@F15OIOFFICE')
- PixelsToPoints procedure (long pPixels), real,
              name('PIXELSTOPOINTS@F15OIOFFICE')
- PointsToCentimeters procedure (long pPoints),
              real, name('POINTSTOCENTIMETERS@F15OIOFFICE')
- PointsToInches procedure (long pPoints), real,
              name('POINTSTOINCHES@F15OIOFFICE')
- PointsToLines procedure (long pPoints), real,
              name('POINTSTOLINES@F16OIWORD')
- PointsToMillimeters procedure (long pPoints),
              real, name('POINTSTOMILLIMETERS@F15OIOFFICE')
- PointsToPicas procedure (long pPoints), real,
              name('POINTSTOPICAS@F15OIOFFICE')
- PointsToPixels procedure (long pPoints), long,
              name('POINTSTOPIXELS@F15OIOFFICE')
- LinesToPoints procedure (long pLines), long,
              name('LINESTOPOINTS@F15OIOFFICE')
- InchesToPoints procedure (real pInches), real,
              name('INCHESTOPOINTS@F15OIOFFICE')
- CentimetersToPoints procedure (real
              pCentimeters), real, name('CENTIMETERSTOPOINTS@F15OIOFFICE')
- MillimetersToPoints procedure (real
              pMillimeters), real, name('MILLIMETERSTOPOINTS@F15OIOFFICE')
 
- Added: New functionality to the Generics
          Example (highly recommended):
          
            - All the oiObject functionality which this example is based on
              has been moved into three classes - msWord, 
                msExcel and msOutlook. These are in
              the msOffice.clw and msOffice.inc
              files in the example folder. These classes provide all the normal
              functionality provided by the OfficeInside classes and expand on
              them. They serve as an excellent basis for building your own
              classes to expand the built in functionality as needed. The
              functionality and parameters of each method are documented above
              each method in the CLW file.
- ConvertUnits procedure -  a generic procedure
              to convert between millimeters, points and centimeters. Handles
              all input and output units.
- Extensive Page Setup example code and
              interface. Demonstrates using the PageSetup
              object and creating a user interface for the properties. Also
              demonstrates retrieving the PageSetup values
              from Excel.
 
- Changed: Improved the accuracy of all
          unit conversion methods to ensure that rounding issues wouldn't cause
          values to degrade when switching a values between units a large number
          of times.
- Note: For a full reference on all
          objects available in the Office Object Model see the MSDN developer
          reference:
          
            - Excel:
              http://msdn.microsoft.com/en-us/library/bb149081%28office.12%29.aspx
- Outlook:
              http://msdn.microsoft.com/en-us/library/bb208225%28office.12%29.aspx
- Powerpoint:
              http://msdn.microsoft.com/en-us/library/bb265987%28office.12%29.aspx
- Word:
              http://msdn.microsoft.com/en-us/library/bb244515%28office.12%29.aspx
 
 
      Version 3.60Beta - 
        4 April 2011
      
         Word
        Word
      
        - Fixed: CloseDoc/NewDoc were not releasing all
          documented interfaces for the previous document, which could result in
          method calls failing on the new document.The interfaces were correctly
          released at object construction, so this only affected the creation of
          multiple consecutive documents.
- Fixed: Spell checking not correctly ignoring HTML
          escape codes where an escape code was used without any characters
          other than white space between a pair of tags.
 
      Version 3.59 Beta (1 April 2011)
       General
 General
      
        - Updated: The SpellCheck HTML example application
          which demonstrates spell checking HTML using OfficeInside and the
          FileExplorer HTML Editor:
          
            - Requires FileExplorer 5.31 or later
- Removed old code.
- Initial HTML populated into the control to demonstrate the use
              of the EditorReady method as well as populating the control for
              formatted HTML with a number of spelling errors for spell
              checking.
- Updated the Editor Files being used by the example
 
        
           Word
 
        Word
      
        - Fixed: The SpellCheckHtml example clipping spaces
          when a section of HTML between two tags ended in one or more spaces.
          The number of spaces is now retained regardless of any other changes
          that occur during spell checking.
- Fixed: HTML escape codes such as ' ' were
          not always being correctly handled when spell checking HTML.
         
       
      Version 3.58 Beta (30 March 2011)
       General
 General
      
        - Added: SpellCheck HTML (FileExplorer) example
          application demonstrates using the OfficeInside spell checking to
          spell check HTML (uses FileExplorer to provide an HTML editor).
         Word
 Word
      
        - Updated: The SpellCheckHtml
          method now handles basic HTML escape codes.
 
       
        oiObject and oiParam -
          Generic Object
 oiObject and oiParam -
          Generic Object
      
        - Fixed: The oiObject pointer for the current object
          and parent object were not being set to Null in the constructor, which
          could result in incorrect behaviour if they were assumed to be null
          when the object was created using New().
- Added: Expanded the Outlook functionality
          demonstrated by the Generics example:
- Added: Generics example expanded Mail and
          Appointment functionality:
          
            - Mail creation
- Sending and receiving (synchronization)
- Moving mail between folders
- Retrieving a specific folder
- Retrieving a Message object
- Saving items as all formats supported by Outlook (Text, Word,
              MSG, Unicode MSG, vCard, vCal, iCal etc.)
- Retrieving appointment objects and getting and setting their
              properties and calling methods
 
- Added: oiObject.MoveTo
          method moves one object into another, and clears all of the source
          object properties.
   Outlook
 Outlook
      
        - Added: oiOutlook.FindChildFolder
          locates a specific folder by name by recursing through all sub folders
          for a parent.
- Fixed: The oiOutlook.WithFolder
          was not checking whether the currently select folder pointer was valid
          correctly. This method is demonstrated in the Generics
          example.
- Fixed: The oiOutlook.WithFolder
          method was not retrieving the folder selected as the parent
          interface was not being used correctly.
- Changed: The oiOutlook.WithFolder
          method now recurses through all folders in order to locate a
          folder by name. This allows it to fetch any sub folder based on the
          folder name.
- Fixed: The oiOutlook.MoveItem(string folderName) method was not always
          retrieving the specified folder correctly. This method is demonstrated
          in the Generics example.
- Added: Both 
              MoveItem methods now allow the Item to be passed. If
          it is omitted, then the currently item (oiOutlook.pItem) is used.
- Change: The FindItems method has been renamed to FindItem, as it
          retrieves a specific item. Use the  FindNextItem
          method to fetch the next matching item.
- New: Generic Access
              to Outlook Items section in the documentation
          covering the properties used and the following methods:
 
            
              
                
                  | CountItems | Returns the number of items in the current
                    Items collection |  
                  | DeleteAllItems | Clears the current Items collection |  
                  | FindChildFolder | Retrieves the child folder from a parent
                    Folder that matches the specified name. This performs a
                    recursive search using the specified parent as the root. |  
                  | FindItem | Finds an item in the current Items collection
                    (folder) based on a search string. The FindNextItem method
                    can be used to find the next matching item. |  
                  | FindNextItem | Finds the next Item matching the search term
                    use with the FindItem call |  
                  | GetDefaultFolder | Retreives the default Inbox folder as well as
                    the root folder (Data Store) which contains the Inbox and
                    all other folders for that store. |  
                  | GetItems | Retrieves the Items interface which represents
                    items in a folder |  
                  | GetItem | Retrieves a specific item |  
                  | GetItemByID | Retrieve an item from any folder based on the
                    unique Outlook ID |  
                  | GetItemByValue | Retrieves an item from the current Items
                    (folder) based on the value of the default field for that
                    item (the default field varies depending on the item type) |  
                  | GetNameSpace | Retreives the Outlook Namespace. This is the
                    "root" for all the rest of the data sets stored by Outlook. |  
                  | LastItem | Retrieve the last item from the current Items
                    collection |  
                  | MoveItem | Moves an items from one folder to another in
                    Outlook |  
                  | MoveItems | Moves all items in the current Items
                    collection to the specified folder. Allows optional
                    filtering of the items based on a filter expression. |  
                  | NextItem | Retrieve the next item from the currently
                    selected folder (Items collection) |  
                  | PreviousItem | Retrieve the previous item from the currently
                    selected folder (Items collection) |  
                  | RemoveItem | Removes the item from the
                    Items collection (this does not delete the actual Item from
                    Outlook). This is the equivilent of filtering out unwanted
                    records from a record set. |  
                  | Restrict | Set a record filter for the result set of
                    items being returned by Outlook. This allows specific items
                    to be retrieved based on any of the fields in Outlook. |  
                  | ResetColumns | Resets Outlook to fetch all columns (fields) |  
                  | SetColumns | Restrict the columns (fields) being retrieved
                    by Outlook for items. This can improve performance by only
                    retreiving data required, rather than retrieving all fields
                    that Outlook stores for each item. This is effectively a
                    View on a database. |  
                  | SortItems | Sort the items in an Items collection in
                    either acending or decending order using the Outlook field
                    specified. |  
                  | WithFolder | Selects a specific folder by name |  
 
 
- Updated: All documentation example code moved from
          static syntax highlighting to dynamic JavaScript/CSS syntax
          highlighting.
 
       
      Version 3.57 Beta (15 March 2011)
        oiObject and oiParam -
          Generic Objects
 oiObject and oiParam -
          Generic Objects
      
        - New: Expanded the Generics example to add Word
          functionality and demonstrate a variety of the objects available.
        
           oiExcel
 oiExcel
      
        - Fixed: The Excel report output missing columns when
          processing reports with controls which would overlap columns created
          for previously processed controls on the page. 
 
       
      Version 3.56 Beta (02 March 2011)
        oiObject and oiParam -
          Generic Objects
 oiObject and oiParam -
          Generic Objects
      
        - Added: oiParam.AddNull() method. Adds a "null"
          parameter to the list. This allows optional parameters to be omitted.
- Updated the Generics example with new examples of Outlook, Word and
          Excel functionality. 
   Outlook
 Outlook
      
        - Added: GetItemById() method. Retrieves an oiObject
          for an item using the passed EntryID.
- Added: GetItemByName() method. Retrieve and
          oiObject of an Outlook item based on the passed name (Outlook matches
          this against the default field on the item type to find the specified
          item).
 
       
      Version 3.55 Beta (24 February 2011)
        General
 General
      
        - Added .attachExisting property. If this is
          set before the call to the Init method then the object tries to attach
          to the existing instances of Word, Excel or Powerpoint if there is
          one, rather than creating a new instances. When the object closes down
          it does not close the application by default (the application can be
          explicitly closed by setting the attachExisting property to False
          before calling the Kill method).
 
- Added a Log method to the oiCore class (available in all classes
          throughout Office). This sends the passed string to the system debug
          output.
 
- Added a errorMessage and 
              errorFunction property to the based classes. Any
          call to ErrorTrap() will populate these two strings, which can then be
          used to display error messages etc. The errorMessage
          property stores the error message, and errorFunction
          stores the name of the method that it occured in.
         oiObject and generic objects
 oiObject and generic objects
      
        - New: oiParams class that allows any number of parameters to be
          passed to any Office object. See the Generics
          example. New methods:
          
            - Construct Procedure ()
- Destruct Procedure ()
- Free Procedure ()
- Count Procedure ()
- Fetch Procedure (long pos)
- AddString Procedure (string sVal, long pType =
              0)
- AddBString Procedure (string bs)
- AddInt Procedure (long pVal, bool isBool=false)
- Insert Procedure (*long pVal, bool
              isBool=false)
- Insert Procedure (*ulong pVal)
- Insert Procedure (*string pVal)
- Insert Procedure (*cstring pVal)
- Insert Procedure (*short pVal)
- Insert Procedure (*ushort pVal)
- Insert Procedure (*byte pVal, bool fUnsigned =
              false)
- Insert Procedure (*real pVal),
- Insert Procedure (*sreal pVal)
- Insert Procedure (*decimal pVal)
- Insert Procedure (*long pDate, *long pTime)
- Insert Procedure (*oiVariant pVal)
- Insert Procedure (*oiObject pObj)
- _AddVariant Procedure (long pVar)
 
 
- New: oiObject.CallEx Procedure calls any member of
          the Office object with the parameters stored in the 
              oiObject.params member.
 
- New oiObject.Call procedure. Functionally the same
          as CallEx(), except that it takes a oiParams object rather than using
          the oiObject.params member.
 
- New: oiObject.GetProp Procedure (string
          propertyName, *oiVariant pValue)
 
- New: oiVariant type that allows any
          Office type to be represented in Clarion applications
 
- Updated the Generics example to demonstrate the use of the new
          methods and classes. Note: This example has been moved to Clarion 6,
          as C55 does not support embedding Vista/Windows 7 manifests natively,
          which is required to interface with Outlook 2010. Not including a
          valid Vista/Windwos 7 manifest will cause the Outlook 2010 security
          dialog to not be displayed correctly (note: by default this dialog is
          only displayed when there is no up to date anti-virus installed, so
          this behaviour won't occur on many systems).
 
- New: oiObject.SetString Procedure (string
          propertyName, string pValue)
 
- New: oiObject.SetInt Procedure (string
          propertyName, long pValue)
 
- New Functionality in the Generics example
          application:
          
            - Creating a new mail message and setting the values for
              properties such as the Subject, Body and To fields.
- Saving a mail message to disk in a variety of formats such as
              text, HTML, MSG, Word Doc etc. (this demonstrates the new oiParams
              class which allows any number of parameters to be passed when
              accessing methods and properties of the Office objects).
- Send and Receive All (Synchronise). Demonstrates getting a
              collection (of Synch objects), looping through the collection and
              getting each object within it, and calling a method of that
              object.
- Listing, retrieving and modifying Appointments items (this code
              existed in previous versions of the example, but has been
              improved).
- New oiWord example, demonstrates basic functionality - custom
              Pasting setting the formatting options
 
        
           oiExcel
        oiExcel
      
        - New: Find method
          allows the document to be searched and returns the address of the cell
          that the data is found at.
- New: GetRangeAddress method returns the address
          that an Range object starts at.
 
      Version 3.54 Beta (13 December 2010)
        General
 General
      
        - This version is compatible with Clarion 7.3
- Updated documentation for oiOutlook with new examples of using the
          generic objects to perform tasks like performing a Send/Receive
          programatically etc.
         Word
 Word
      
        - Fixed: The PrintOut example was calling the Init method for Excel
          and Word twice, which was preventing it from opening documents
          correctly.
         oiExcelImpEx
 oiExcelImpEx
      
        - Fixed: The CLW file was not being included in the project by the
          template, resulting in unresolved external errors.
- Fixed: The SetMap method was not correctly setting all queue entries
          based on the passed queue.
- New ValidateRecord example code in the documentation
- Added ValidateRecord example code to the ImportExport example
          application
- Added example data to the ImportExport example
 
       
       
      Version 3.52 Beta (12 August 2010)
        General
 General
      
        - Updated documentation for oiOutlook with new examples of using the
          generic objects to perform tasks like performing a Send/Receive
          programatically etc.
- Fixed: The PageSetup method was failing as the properties were set
          for the wrong interface.
 
      Version 3.51 Beta (12 August 2010)
        General
 General
      
        - Updated documentation for oiExcel to include additional examples
- Expanded the oiExcel How To section with new code examples
- Expanded the color handling sections and added links to all relevant
          methods, properties and other documentation to each of the section.
- Added new color handling sample code.
- Marked old export functions as deprecated and added notes linking to
          the new oiExcel class.
- Fixed typographic errors
- Expanded documentation for a number of methods in the oiExcel class,
          added code samples and reformatted the documentation in the new style
          (including parameters, return value, remarks, examples and
          references).
 
      Version 3.50 Beta (12 August 2010)
        General
 General
      
        - Clarion 7.2 compatibility updates.
 oiObject
 oiObject
      
        - The oiObject documentation
          is now available and documentats the entire class.
- Added a HowTo
          section to the oiObject documentation.
- The following methods are now available:
- Init procedure (string pName,
          *oiObject iParent, <long itemNumber>)
- Kill Procedure ()
- GetChild procedure (string cName,
          *oiObject child, <*long itemNumber>)
- GetChild procedure (string cName,
          *oiObject child, *string identifier)
- GetParent procedure (*oiObject
          iParent)
- AsVariant procedure ()
- Get procedure (string
          propertyName, *long pValue)
- Get procedure (string
          propertyName, *string pValue)
- Get procedure (string
          propertyName, *long dateValue, *long timeValue)
- Note: Under Clarion 5.5,
              the "Get" methods are named "GetProp".
- Set procedure (string
          propertyName, *real pValue)
- Set procedure (string
          propertyName, *string pValue)
- Set procedure (string
          propertyName, *long pValue)
- Set procedure (string propertyName
          dateValue timeValue)
- Set procedure (string propertyName
          pValue)
- Set procedure (string
          propertyName, *oiObject pObj)
- Call procedure (string methodName)
- Call procedure (string methodName,
          *long pValue)
- Call procedure (string methodName,
          *string pValue)
- Call procedure (string methodName,
          *oiObject pObj)
         oiExcelImpEx
 oiExcelImpEx
      
        - New oiIExcelmpEx documentation.
        
- Added a How To and
              Examples section, including code for the most
          frequently used functionality in the class, and the various scenarios
          that it is used in.
- Note: The Colum/Field mapping support has not been fully tested in
          this release. It will be tested and new set of examples and templates
          will be provided with the next release.
- New methods that are now available:
          
            - Construct Procedure ()
- Destruct Procedure ()
- Init Procedure ()
- InitExcel Procedure ()
- Kill Procedure ()
- Open Procedure (string p_FileName)
- NewWorkbook Procedure (string p_FileName)
- SaveFile Procedure ()
- OpenFile Procedure ()
- CloseFile Procedure ()
- With Procedure (*File f)
- With Procedure (*Queue q)
- With Procedure (*Group g)
- With Procedure (*View v)
- Load Procedure (*File p_File, string
              p_FileName)
- Load Procedure (*Group p_Group, string
              p_FileName)
- Load Procedure (*Queue p_Queue, string
              p_FileName) 
- Load Procedure (string p_FileName) 
- SetupLoad Procedure ()
- Save Procedure (*Group p_Group, string
              p_FileName)
- Save Procedure (*File p_File, string
              p_FileName)
- Save Procedure (*Queue p_Queue, string
              p_FileName),long 
- Save Procedure (*View p_View, string
              p_FileName) 
- Save Procedure (*string p_FileName)
- SetupSave Procedure()
- SaveData Procedure()
- TakeInit Procedure ()
- TakeSetup Procedure ()
- TakeComplete Procedure ()
- ValidateRecord Procedure ()
- TakeRecord Procedure (*excelImportQType cellsQ)
- InsertRecord Procedure ()
- AssignField Procedure ()
- IgnoreField Procedure (long fieldNum)
- ClearIgnored Procedure ()
- Close Procedure ()
- CloseAndKill Procedure ()
- CreateFooter Procedure ()
- CreateHeader Procedure ()
- AddMap Procedure (long fieldPos colPos)
- SetMap Procedure (*oiColumnMap qMap)
- GetMap Procedure (*oiColumnMap qMap)
- CreateMap Procedure ()
- ClearMap Procedure ()
- FieldName Procedure (long fieldPos), string
- ColumnName Procedure(long columnNumber), string
- CountFields Procedure()
- SetHeader Procedure (string headerText, long
              colPos)
- HeadersFromFields Procedure (long caseType = 0,
              long keepPrefix = false) 
- RunFile Procedure (string fileName)
- FreeData Procedure ()
- FreeFileData Procedure ()
- FreeQueueData Procedure ()
- FreeGroupData Procedure ()
- ProgressControl Procedure (long
              progressControl)
- ProgressSetup Procedure (long rangeLow
              rangeHigh)
- ProgressSet Procedure (long progress)
- ProgressIncrement Procedure ()
- DbgMsg Procedure (string pDbgMessage)
- ErrorTrap Procedure (string errorMessage,
              string functionName)
- IsIgnored Procedure (long pos)
 
- Internal Methods
          
            - _ClearReferences Procedure ()
- _ClearAutos Procedure ()
- _GetRecord Procedure ()
- _GetViewRecord Procedure (long fieldPos)
- _ClearRecord Procedure ()
- _SetHeaderText Procedure(*string hText)
 
 
- The following Properties are now available:
- dataType long -
          The data type being import or exported
- debug long -
          Enable debug output
 
 Properties used for both import and export
- colMap &oiColumnMap
          - Maps columns to fields
- ignored &oiIgnored
          - Ignored fields or columns
- killWhenDone long
- excelFile string(280)
          - Name of the Excel document
 
 Properties that modify the position to process from, and the
            number of records to process. These are cleared at the end of each
            load/save call.
- startRow long -
          Row to start at in the Excel document
- startCol long -
          Column to start at in the Excel document
- curRow long -
          The current row being read/written
- curCol long -
          The current column being read/written
- numRows long -
          Number of rows to process
- numCols long -
          Number of columns to process
- startField long
          - Field to start at in the data structure when importing or exporting
- numFields long -
          Number of fields to export
- curRecPos long -
          Position of the record being processed
- currentField Any
          - The current field in the data structure
- currentFieldNumber long
          - Position of the current field
 
- progressControl long
          - Optional handle to a progress control 
- hideProgress long
          - Used to automatically unhide a progress control during the process,
          and then hide it again when complete
 
- action long - If
          this is oix:Save, then a save (export) is being performed, otherwise a
          Load (import) is being performed
 
- lastError long -
          The last error code
- errorMessage string(1024)
          - the error message associated with the last error
 
- openAfterSave long
          - If set the file is opened once the save is complete
 
 Export properties
- commitFileRecords long(1024)
          - How many file records to process in LOAD before committing
- headers &oiHeaders
          - Queue of custom headers for each column
- appendToFile long
          - If this is set, then the Excel workbook is appended to
 
- Import properties
- freeBeforeLoad long
          - Clear/Empty the data structure before loading
- cellsQ &excelImportQType
          - Queue of cell data for the current row. Allows filtering and
          modification in the 
 
 Internal Properties
- f &File
- q &queue
- g &group
- v &View
- rec &group
- fileOpened long,
          dim(100)
- viewOpened long
- bindPushed long
 
 
- Removed uneeded global extension from the ImportExport example, and
          corrected the path to the included oiImpEx.clw file.
 
      
         Excel
 Excel
      
        - Documented new methods:
          
            - PrintSheet procedure (*oixPrintProperties
              printSettings)
- PrintWorkbook procedure (*oixPrintProperties
              printSettings)
- _PrintOut Procedure (*oixPrintProperties
              printSettings, long pType=oix:PrintWorkbook)
- SetAlerts Procedure (long alertLevel)
- GetActiveSheet Procedure (*oiObject iSheet)
 
 
  Outlook
 Outlook
      
        - Updated Case 1659 (UAC breaks interaction with Outlook): Ensure
            that your applications that will interact with Outlook have a valid
            manifest file for Vista/Windows 7. Without a valid manifest
          file, your application may require elevation in order to run, which
          will prevent Outlook 2007 and 2010 from displaying security prompts to
          the user. In the event of a security prompt requiring user
          interaction, this will prevent your application from interacting with
          Outlook, and it may appears as if your application has locked up while
          waiting for a response from Outlook. It is strongly recommended that
          elevated applications do not interact with Outlook directly. The
          Microsoft design recommendations should be followed - seperated the
          functionality that requires elevation into a seperate application, or
          seperate the components that interact with Office into applications
          that can be run without requiring priviledge elevation. 
- Updated the FAQ with the above information.
- Updated the Outlook security FAQ to cover Outlook 2003 and earlier,
          Outlook 2007 and Outlook 2010
- New methods ot provide generic access to Outlook using the oiObject
          class, as to provide improved performance and flexibility when
          retrieving multiples items (Mail, Contacts, Appointments etc.). Allows
          the columns to be restricted (improving performance), as well as query
          style (filtered) access to Outlook data, for dramatically improved
          performance and efficiency when fetching large data sets, and the
          ability to synchronise data between Outlook and Clarion.
- GetNameSpace Procedure()
- GetDefaultFolder Procedure()
- WithFolder Procedure(string
          folderName)
- GetItems Procedure()
- GetItem Procedure(long itemPos)
- GetItem Procedure(long itemPos,
          *oiObject pItem)
- NextItem Procedure()
- PreviousItem Procedure()
- FirstItem Procedure()
- LastItem Procedure()
- Restrict Procedure()
- SetColumns Procedure()
- ResetColumns Procedure()
- RemoveItem Procedure()
- DeleteItems Procedure()
- MoveItem Procedure(string
          destFolderName)
- MoveItems Procedure(string
          destFolderName)
- FindItems Procedure(string
          searchString)
- FindNextItem Procedure()
- CountItems Procedure()
- _Cleanup Procedure()
 
- New Properties:
-  pNameSpace 
          &oiObject - Root MAPI namespace
- pRootFolder 
          &oiObject - The Folders collection that contains the default inbox
 
 Default folders for each of the item types
- pMailFolder 
          &oiObject
- pContactFolder 
          &oiObject
- pCalendarFolder 
          &oiObject
 
 Current items
- pFolder &oiObject
- pItems &oiObject
          - The current Items collection
- pItem &oiObject
          - The currently selected item
- Fixed: The Reminder flag is now correctly retrieved when reading
          appointments.
 
 
       
      Version 3.41 Beta (9 June 2010)
        General
 General
      
        - Expanded the new oiObject
              documentation to cover all the methods provided,
          along with examples detailing the use of each of the methods and
          properties.
- The oiObject class now supports passing objects to methods as
          parameters. See the Moving
              Mail Between Folders HowTo for an example.
- Fixed a GPF in the Kill method as a result of a pointer being
          disposed of twice.
 
      Version 3.40 Beta (4 June 2010)
        General
 General
      
        - Clarion 7.2 Compatibility.
- Expanded the "Generics" example and added a new section documenting
          the new oiObject class, which provides full access to the Office
          Object Model.
- Coming soon: Additional examples of using oiObject to move mail and
          other items between folders in Outlook, as well as manipulating Excel,
          Word and Powerpoint.
         Excel
 Excel
      
        - New oiExcelImpEx class provides powerful and simple import and
          export functionality to and from Excel using Clarion Files, Queues,
          Views and Groups.
- Added an ImportExport example that demonstrates using the new
          oiExcelImpEx class.
- Initial oiExcelImpEx documentation
- Coming soon: new import and export templates.
 
       
      Version 3.21 Beta (7 May 2010)
        General
 General
      
        - Resolved duplicate symbol error in C7.1 in local (lib) mode for apps
          using FileExplorer and OfficeInside. 
- Resolved a duplicate symbol error in C7.1 in local mode when using
          both the Topspeed and DB4 file drivers and Insight Graphing with
          OfficeInside and FileExplorer.
 
      Version 3.21 Beta (3 May 2010)
        General
 General
      
        - New "Generics" example demonstrates using the oiObject class to
          interact with Outlook.
- Expanded the oiObject support in the oiOutlook class, to allow
          objects to be retrieved and used more effectively.
- New: oiGetChild() method that allows a string to be passed
          specifying which child is retrieved.
- For example, get an Appointment Item from Outlook based on the ID,
          set and get properties from the object, and then add a Recipient (an
          attendee) to the appoinment, and set properties for that object.
 
Outlook       oiOutlook
Namespace     oiObject
Appointment   oiObject
Recipients    oiObject
Attendee      oiObject
ItemID        string(_oit:EntryIDSize)  
attendeeList  string(1024)  
 
AddAttendee routine
    ident = 'MAPI'
    if Outlook.iApplication.GetChild('GetNamespace', Namespace, ident)
        
        if Namespace.GetChild('GetItemFromID', Appointment, ItemID)
            Appointment.Set('BusyStatus', oio:Busy) 
            
            if Appointment.GetChild('Recipients', Recipients)      
               
                if Recipients.GetChild('Add', Attendee, attendeeName)                      Message('Attendee Added.')
                    Attendee.Set('Type', oio:Required)
                else
                    Message('Failed to add an Attendee.')
                end
                
                Appointment.Call('Save')
                 
                Appointment.Get('RequiredAttendees', attendeeList)
                Display(?attendeeList)
            end
        else
            Message('Could not get the requested appointment, the ID may be invalid.')
        end
    end
    Do Cleanup
-  Fixed oiObject.GetChild not returning True when
          successful when passed a string identifier for the specific child to
          be retrieved.
         Word
 Word
      
        - Fixed: The NewDoc
          method was not working when a file name was passed to the method (when
          a file name is passed, that file is used as the template for the new
          document).
- Fixed: OpenDoc
          not returning true (1) when the document was opened successfully.
- New documentation for the 
              SaveAs method, including a full list of all formats
          for Office 2003 and earlier, and Office 2007 and later. Also includes
          multiple examples, and a full discussion on the various options for
          ensuring compatibility across versions of Word. 
            Recommended reading!
         Excel
 Excel
      
        - Fixed: SelectWorksheet not selecting the specified
          sheet.
- Changed: Initial optimisation and refactoring of the methods related
          to interaction with work sheets. 
 
       
       
       
      Version 3.20 Beta (12 April 2010)
        General
 General
      
        - Added: oiObject.Kill method. This method cleans
          up and disposes all memory allocated for an oiObject instance.
- Added: iApplication object to each of the classes.
          This generic oiObject represents the
          application and can be used to call methods and access properties of
          the application associated with the OfficeInside classes, as well as
          get child object for that application.
- The new generic oiObject class is now functional and available for
          use:
          
            - Init - creates the object, using the passed
              name:
 iSheet               oiObject
 ExcelBook            oiExcel
 code
 ExcelBook.Init()
 :
 iSheet.Init('ActiveSheet', ExcelBook.iApplication)
- GetChild - gets a child object, such as a
              MailItem from a Folder or a Sheet from a Workbook.
 ExcelBook.iApplication.GetChild('ActiveSheet',
                iSheet)
- GetParent - retrieves the parent object.
 ! Use to retrieve a parent object of the passed object.
 iSheet.GetParent(iWorkbook)
- GetProperty - gets the value a property of the
              object using the property name. For example:
 iWorkbook.GetProperty('FullName', workbookFileName)
- SetProperty - Sets the property of the object
              to the passed value. Example:
 iActiveSheet.SetProperty('Name', 'Accounts
                Nov')
- CallMethod - call a method of the object.
              Example:
 iSelectedSheet.CallMethod('PrintPreview', oi:False)
 
- Using a generic oiObject:
 iSheet               oiObject
 ExcelBook            oiExcel
 code
 ExcelBook.Init()
 
 :
 iSheet.Init('ActiveSheet', ExcelBook.iApplication)
 
 iSheet.GetChild('PageSetup', iPageSetup)
 
 :
 centerFooter = 'My Worksheet':
 iPageSetup.Set('CenterFooter', centerFooter)
- Excel Editable Report Output. Resolved (Fixed) Case 870:   Blank
          rows and columns not being deleted 
- Fixed: Potential memory leak when destroying an OfficeInside object.
- Tested OfficeInside with MS Office 2010.
- Resolved EXP file export inconsistencies, particularly for C55.
- Added a officeVersion property, which
          retrieves the version of Microsoft Office when the object is
          initialised. Note: You can get the version of Office directly by
          calling the GetOfficeVersion method. This can be
          used before the object is intialised to check for a valid version of
          Office - if no version of Office is installed this method returns
          zero, and if the version returned is less than 9 (Office 2000), then
          the version of Office available is too old. The versions returned are:
          
            - 14     Office 2010
- 12     Office 2007
- 11     Office 2003
- 10     Office XP
- 9       Office 2000
 
- The GetOfficeVersion method now supports all
          version of Office up to version 20 (future releases).
- Fixed: Incorrect icons used in the example application.
- Added: The main Demo example now allows the printer to be selected
          from a list when performing a mail merge to a printer. This also
          demonstrates the use of the new oiUtil class to fetch a list of all
          printers installed on the machine, as well as using the SetPrinter
          method to set the printer for Word
          
            - Notes: 
 1. When using the PrintOut method the printer to
              use can be passed directly to the method, and SetPrinter
              does not need to be called.
 2. If no printer is set (for both a mail merge and when calling PrintOut),
              then the current printer (usually the system default) is used.
 
- Examples: Demo: Removed the empty Wizard procedure from the demo
- Examples: Demo: oiExcelImportWizard is now called from the button
          and correctly place in the procedure tree.
- Examples: Demo: The About window now demonstrates the use of the GetVersion
          method to display the version of Office installed. This uses the
          oiOffice class directly, and retrieves version without initialising
          any of the Office applications. Note: The version is automatically
          retrieved and stored in the officeVersion
          property of each object when a specific object is initialised.
- Examples: Demo: Main Word example - fixed the display of methods
          being called in the listbox (note: some methods may not display in
          this list as the internal method handling is being updated and
          improved, this will not affect functionality or Word event callbacks).
- Examples: Demo: Added Document Statistics to the "Other" menu for
          the main Word example.
- Examples: Demo: Added a "Unit Conversion" example to the "Other"
          menu for the main Word example.
- Changed: The template now checks whether %ApplicationLocalMode is
          defined, otherwise it assumed that the project is in DLL mode. 
- Resolved (implemented): Case 1052:   DLL Function to check whether
          Office applications are available. Can be done by calling the  GetOfficeVersion
          provided by all the classes. If the method returns 0, then Office is
          not available.
 
      
         Word
 Word
      
        - Spell Checking: Changed: By default Word is now initialised when the
          spell checking is first called, if it has not already been
          initialised. This can speed up the procedure start significantly, and
          only intialises Word when the needed (if the spell checking
          functionality is not used, then Word is never initialised). The object
          is reused until the procedure is closed, at which point it is
          automatically cleaned up.
- Spell Checking: Added: Automatic initialisation and creation of the
          document and spell checking interfaces. These are now persistent for
          the lifetime of the procedure, improving performance. Cleanup is done
          when the procedure exits.
- Spell Checking: Fixed: When spell checking and RTF control the
          actual RTF code was being retrieved in certain cases (an empy RTF
          control, or a control that only contained whitespace). The text is not
          correctly retrieved.
- Note: Word 2010 appears to have an error in one of the interfaces
          that is causing spell checking to fail. This has been reported to
          Microsoft.
- Fixed: Spell checking errors and template error in C55 and C6. The
          spell checking has been updated and improved for all versions of
          Clarion.
- Resolved (fixed): Case 1660:  Spell checking GPFs on an empty RTF
          control.
- Resolved (implemented): Case 2212:  Spell Checking template - change
          to init based on the user's choice (Word is initialised when the spell
          checking code is first called, however the user can intialise it
          earlier, and the spell checking code will automatically use the
          intiailised instance).
- Resolved (fixed): Case 1661:  Spell checking doesn't handle
          compositions. Spell checking now handles string that contain
          compositions such as "isn't"; "wouldn't"; "it's"; "could've" and so
          on.
- This version includes major refactoring and a rewrite of a large
          portion of this class.
- Support for multiple documents. When a new document is opened or
          created it becomes the active document, and when a document is closed,
          the next available document becomes the active one. This includes
          documents opened by the user - calling oiWord.GetActiveDocument(true)
          will get the active document for use, regardless of whether
          OfficeInside created or opened the document or not.
- The Open, Save and SaveAs methods now use the new format by default
          under Office 2007 and later.
- Added: When saving a document using the default format the version
          of Word being used is detected and the correct format selected
          automatically. This can be overridden using the pFileFormat parameter.
- Added: New formats for opening and saving files.
- Added: When opening a document the native format of the document is
          used rather than forcing a specific format.
- Fixed: Incorrect message that there is not sufficient buffer size
          for replacing a word when spell checking.
- Added: Opening documents using a Password is now supported.
- Improved efficiency of the OpenDoc method.
- Added the Documents interface to the class. Will provide support for
          working with multiple documents simultaneously.
- Closed (Fixed) Case 1611:  FindText always returns
          1, even when nothing is found 
- Rewrite of the following methods to improve performance, memory
          usage, error handling, and improve the class structure:
          
            - _InitWordSelection()
- _InitRange() - creates the range interface
- _WrapperSelection() - handles SetSelection();
              MoveLeft() etc. Will be replaced and deprecated in future
              versions.
- _WrapperDocument() - handles document level
              options such as self.SetBackground(). Will be replaced and
              deprecated in future versions.
- _KillRange()
- _InitTables()
- _InitInlineShapes()
- _WrapperParagraphFormat() - will be replaced in
              future versions.
- CheckSpelling_Init()
- _WrapperStoryRanges() - will be replaced in
              future versions
- _InitInlineShapes()
- InsertPicture()
- SaveAs()
- Underline()
- _WrapperWordFont() - will be replaced in future
              versions
- _InitWordFont()
- _InitPageSetup()
- _InitSystem()
- GetFileName()
- CountCharacters()
- SetSelection()
- _WrapperTableRows()
- Undo()
- _WrapperDocument() - Complete re-write. Will be
              split into individual methods using the new interfaces, and
              deprecated, along with all other "wrapper" methods.
- Redo()
- RefreshScreen()
- _WrapperActivePane() - will be replaced in
              future versions.
- _WrapperCommandBar() - will be replaced in
              future versions.
- ShowToolbar()
- HideToolbar()
- CountOpenDocs ()
- PrintPreview() 
- PrintPreview(long) 
- CheckSpelling_Init()
- SetActivePrinter()
- CountCharacter - complete rewrite, now calls DocumentStatistics
 
- Rewritten and refactored to support multiple simultaneous documents,
          improve performance, reduce overhead etc.
          
            - NewDoc()
- OpenDoc()
- CloseDoc()
 
- The following methods are now obsolete and deprecated:
          
            - _KillApplication
- _KillSystem
 
- New Methods:
          
            - GetDocuments - Gets the Documents interface
- GetActiveDocument - Get the ActiveDocument
              interface
- GetRange - Get the Range interface
- GetWindow - Get the ActiveWindow interface
- GetPane - Get the ActivePane interface
- StoreDoc - Stores each new or opened document
              in the Documents queue as an oiObject
- RemoveDoc - Removes a document from the
              .Documents queue, typically when it is closed.
- ReleaseDocs - Clears the .Documents queue and
              releases all memory allocated.
- GetDialogs - Get ths Dialogs interface and the
              Dialog interface for the File->Printers dialog (used for
              setting the active printer for Word).
 
- New Methods (general use)
          
            - DeleteSelection - Delete a selection
- RefreshDocs - Refreshes the list of available
              documents and populates the .Documents queue with all the
              currently open documents.
 
- New Documents queue, stores all open documents as a queue
          of oiObjects. The documents can be switched
          between, manipulated, and otherwise fully accessed  using the
          interface provided by the new oiObject
          class.
- Rewrote SetPrinter, which aso fixes it returning
          an incorrect value
- Resolved (fixed): Case 1595:   GetFontNames is not working -
          returning an empty queue. Note: This functionality in broken in Office
          2010 Beta. This has been reported to Microsoft.
- Resolved (implemented): Case 1299:   DeleteSelection
          method - deleted the current select in Word.
- Resolved (implemented): Case 1588:   Page orientation and setup,
          margins etc. - implemented via both the Update and PrintOut
          methods.
- Resolved (implemented): Case 1449:   Add Documents queue that stores
          Document objects 
- Closed (duplicate): Case 1931:   Autofilter not
          properly implemented 
- Resolved (implemented): Case 2216:   Version function needs to
          support checking for Office 2010 
- Resolved (implemented): Case 1127:   SaveAs function - Save As Html
          saves a "Web archive" .mht (EML) file, needs an HTML option 
 
 
  Outlook
 Outlook
      
        - Closed (Not reproducible) Case 1659: UAC breaks interaction with
          Outlook. 
- Closed (Not reproducible) Case 1667: Appointments not all being
          fetched when UAC is turned on 
- Resolved (Implemented) Case 373: The oioFolderItemsQ does not have
          date or time fields. 
- Resolved (By Design) Case 1119: IMAP folders not included in the
          Folder list that is retrieved. This is how the Microsoft Outlook
          Object Model is designed. 
- Resolved (Implemented) 
              Case 516: Increase Property Size (Body field for items).
- Fixed: Problems calling the oiSendEmail() function, which was
          failing under newer versions of Office.
         Excel
 Excel
      
        - Added: OpenWorkbook now prompts the user to select a file if the
          passed file name is blank or omitted. Previously calling with a blank
          file name would simply fail. The file name can be passed, or a blank
          file name can be passed, or the parameter can be omitted entirely.
- Resolved (Implemented) Case 1248: Expose additional print properties
          for Excel. See the PrintWorkbook() and 
            PrintWorkSheet() methods.
- Deprecated: OpenWorkbook_LB method. The
          functionality is provided directly by the OpenWorkbook
          method.
- Resolved (Implemented) Case 1408: Expose the 'DisplayAlerts'
          property. See SetAlerts()
- Added: GetActiveSheet(). Creates an 
              oiObject that represents the currently active sheet.
- Added: GetPageSetup(). Creates an 
              oiObject that represents the PageSetup object. This
          contains all the Page Setup settings for the currently active
          worksheet.
- Resolved (Duplicate) Case 1687: Add OpenHeader and CloseHeader
          methods. These are exposed by the PageSetup property, which is being
          exposed via the GetPageSetup() method.
- Resolved (Implemented) Case 1616: Expose the Zoom property in Office
          Inside. Implemented via the PageSetup object.
- Resolved (Implemented) Case 1877: Page Layout Options. Implemented
          via the PageSetup object.
- Resolved (fixed) Case 1934: C7 compatibility for editable reports.
- Resolved (Implemented) Case 1935: Set Page Margins. Implemented via
          the PageSetup object.
- Resolved (Duplicate) Case 1938: Set page zoom. Implemented via the PageSetup
          object.
- Resolved (Fixed) Case 1985: Editable reports not working in C7 PE.
- Resolved (Duplicate): Case 1370: Expose the PageSetup object 
- Resolved (Duplicate): Case 1867: Print Setup/Settings
          propeties/methods 
- First round of refactoring and optimisation:
          
            -  _WrapperRange - will be replaced in future
              releases
- InsertRow
- WriteToCell
- SelectCells
- InsertColumn
- SetCellBackgroundColor
- GetCellBackgroundColor
- CountUsedRows - complete replacement,
              encapsulates the functionality within the method itself, and adds
              full error handling. Returns the number of rows that contain data,
              or returns -1 if an error occurs and calls the ErrorTrap() method
 
- Old Excel Import template now cleanly closes the document rather
          than try to save it (new import template coming soon)
- SaveAs method now automatically detects the version and uses the new
          Excel format by default for Office 2007 and later.
- Fixed: Example data - some example had old data shipped
- Updated: All the example applications have been updated, tested and
          improved.
- If the Excel report output fails to save, the created Excel document
          is then displayed to allow the user to save it to an alternate
          location.
- Fixed Editable Report output not calculating columns correctly when
          placing data.
         
      
        
           PowerPoint
 PowerPoint
      
        - Refactored methods and interfaces for future expansion of this
          class.
 
       
      Version 3.15 Beta (21 January 2010)
        General
 General
      
        - Modified template, DLLs, LIBs and linking for C7 and C7.1
          compatibility.
- _ABCLinkMode_=>1 set to 0 in C7.1 and C7.0 build for the LIB
          compile.
- Ship pwutil.lib, and link at the project level
- Changed projects to release mode to work around broken Assert
          function in Clarion 7.0. Fixes errors such as: "Assertion failed on
          line: 1461 in file pwcom.clw when calling ReplaceText".
- Fixed: Assert messages in Clarion 7.0, as a result of the broken
          Assert statement in C7.0 (see above). This error only affect Clarion
          7.0, it is fixed in Clarion 7.1.
- Tested build for regression in Clarion 6 in Local and Standalone
          modes.
- Test build for regressions in Clarion 5.5 in Local and Standalone
          modes.
         Excel
 Excel
      
        - New: Added a SetAlerts() method to enable or
          disable the display of alerts. Can be set to true (1) or false (0). If
          alerts are disabled, then Excel will assume the default value rather
          than prompting the user. 
  Word
 Word
      
        - Note: There is a known bug in the spell checking for RTF controls.
          When the control is empty, or only contains control characters (such
          as CR,LF pairs), the GetText method is returning the underlying RTF
          rather than the text itself. This will be resolved for the next
          release.
  Outlook
 Outlook
      
        - One report of the Address Book/Contacts not working in the demo
          application. Tested in Office 2003 and 2007 under XP, Vista and
          Windows 7. Note that the security settings can interfere, particularly
          in Office 2007. If the user has selected to disable all interaction
          with external applications, the functionality will not work. The
          default setting in Office 2007 is to prompt the user if the anti-virus
          solution is out of date (or not installed). The new section of the
          docs on Outlook Security covers
          this issue in detail.
- Added: Outlook Security section
          to the Outlook documentation (If you use
            Outlook, this section should be considered required reading. Ignore
            it at your own peril!).
 
       
      Version 3.14 Beta (31 December 2009)
        Word
 Word
      
        - New: The PrintOut() method now supports setting
          the printer using the PrinterName parameter.
- New: SetPrinter() method. Allows the printer for
          the current Word document to be set. 
- New: SetAlerts() method allows the alert level to
          be set to oiw:AlertsNone(0), oiw:AlertsMessageBox(-2),  or
          oiw:AlertsAll(-1).
 
      Version 3.13 Beta (30 December 2009)
      
         Excel
 Excel
      
        - Fixed: ReadCell truncating data at 255 bytes. The full 32KiB is now
          supported.
 
      Version 3.12 Beta (23 December 2009)
        General
 General
      
        - Fixed: Clarion 7.0 and 7.1 template compatibility
- Fixed: Linker problems in Clarion 7.1
- Fixed: Editable report template options causing problems in Clarion
          7.1 PE as a result of template changes in Clarion 7.1 (Clarion
          Enterprise is unaffected).
- Fixed: Word editable report output not displaying the selection
          option at runtime when used with Fomin Report Builder.
- Added: Performance improvements for the editable report output
 
      
        - Note: Non public pre-release versions of Clarion 7.1 prior to the
          office 6545 build are NOT supported, as a result of
          linker changes and fixes in the official 7.1 release.
 
      Version 3.11 Beta (14 December 2009)
        General
 General
      
        - Fixed: The Word Editable report template wasn't always providing the
          option to print to Word at runtime when using with Fomin Report
          Builder reports.
 
      Version 3.10 Beta (03 December 2009)
        General
 General
      
        - Deprecated: The Benchmark example is deprecated and has been removed
- Fixed: The Init() method prototype was incorrect
          in the Two Printers example
- Fixed: An assert firing when compiled in C7 debug mode ("assertion
          failed on line: 382 in file pwcom.clw")
- New: ProcessToExcel example application which
          demonstrated creating an Excel workbook, inserting data from a table,
          saving, and closing the workbook Automatically using a Process
          procedure.
- New: ExportBrowse example. Demonstrates creating a
          working, dynamically exporting all fields in a queue or a file to the
          workbook, and saving and closing the workbook (as well as optionally
          displaying it to the user). The approach used for the export can be
          used to export any file or queue, regardless of the fields in the
          queue or table.
- Update documentation, and list all the examples in the Examples
          section, along with descriptions of all examples.
- New editable report output templates for Word and Excel. These
          replace the old templates and provide improved integration with
          Clarion's report templates
- Editable report output support for Legacy applications
- Editable report output support for Fomin Report Builder
- Improved editable report output support for CPCS
- Improved editable report output support for other third party
          reporting and previewing templates
- Added: Editable reports for Excel and Word are now fully support in
          Legacy application.
  Word
 Word
      
        - New: ReplaceInString() method, allows one or more
          instances of a substring to be found and replaced in a string (does
          not require Word).
- Fixed: Spell Checking now fully supports Clarion 7 (fixed a GPF that
          could occur under C7).
- Fixed: The "Spell checking complete" message being displayed on
          controls that were excluded from spell checking (although no spell
          checking was actually performed the message was still displayed).
- Fixed: The spell checking template "exclude/include" controls
          options were not functioning correctly.
- New: 
              DocumentStatistics() method with the following
          options:
          
            - oiw:StatisticCharacters: Count of characters.
- oiw:StatisticCharactersWithSpaces: Count of characters including
              spaces.
- oiw:StatisticFarEastCharacters: Count of characters for Asian
              languages.
- oiw:StatisticLines: Count of lines.
- oiw:StatisticPages: Count of pages.
- oiw:StatisticParagraphs: Count of paragraphs.
- oiw:StatisticWords: Count of words.
 
 
      
         Excel
 Excel
      
        - Improved: Editable Report Output now supports a
          far wider variety of reports and provides intelligent positioning for
          even complex reports. The previous version still had problems with
          reports that had few "columns" near the top of the report, but had
          controls spread out horizontally. It was creating columns for these
          controls, which then offseted columns created further down, which
          should have been "inserted" before these existing columns, but were
          instead added after them. The code has been refactored to handle these
          cases for both rows and columns.
  Outlook
 Outlook
      
        - Added: A new "SimpleEmail" example that
          demonstrates sending a text only email using Outlook using a minimal
          window, and only one line of actual code.
 
       
      Version 3.03 Beta (9 November 2009)
        Word
 Word
      
        - New: ReplaceInString() method, allows one or more
          instances of a substring to be found and replaced in a string (does
          not require Word, or the Init method to be called).
- New methods (methods that existed have been expanded, improved and
          are now fully supported by the templates):
          
            - SpellCheckString
- SpellCheckHtml 
- SpellCheckRTF
- ReplaceInString
 
- New callback methods:
          
            - GetRtfText
- ReplaceRtfText
- SpellWord 
 
- New: Completely replaces Spell Checking. Provides improved spell
          checking for text, RTF and HTML.
- New: Replace All functionality in spell checking is now implemented
- New: Spell checking is now object based and no longer generates
          large amounts of code for each control on the window
- Improved spell checking performance and efficiency.
- New spell checking control template allows the controls and code to
          be populated onto any window
- Control template based spell checking eliminates the maintenance
          required by the previously source based TXA import and helper
          template.
- Spell checking no longer requires any other extensions - just the
          control template needs to be populated onto a window (or the provided
          utility template can be used to add the window to your application
          automatically).
- New spell checking is fully backward compatible. We recommend
          replacing the old spelling suggestions window with the new one.
- Note: If the old template is used a warning at compile time will be
          displayed once. This warning will not be displayed on subsequent
          compilations of the application.
- New: oiWord.PageSetup()
          method allows all page setup properties for the current document to be
          modified.
- Documentation updates and improvements
 
      Version 3.01 Beta (13 October 2009)
        General
 General
      
        - Fixed: Missing files from the installer
- Fixed: Missing Example data in the installer
- Fixed: Compile errors in C7
 
      Version 3.00 Beta (9 October 2009)
        General
 General
      
        - Added: oiApiBase class provides a base class that
          encapsulates basic API functionality, debugging and error logging
- Added: oiUtil class for general functionality
          outside of the Office classes, for example listing all printers on the
          system and populating them into a queue. Useful with the new 
            PrintOut methods that allows fully automated printing to
          any printer with no user interaction
- Added: oiUtil.EnumPrinters method populates a queue
          with a list of all printers installed on the system. See the new PrintOut example application.
- Added a new oiObject class. This represents any
          Office object, such as a mail item, workbook, worksheet, chart, mail
          folder, address book entry etc. This provides generic access to the
          methods and properties of Office objects, including those not exposed
          through the other OfficeInside classes.
 Some of the new methods provided by this class include:
            - GetProperty - gets the value a property of the
              object using the property name. For example:
 iWorkbook.GetProperty('FullName', workbookFileName)
- SetProperty - Sets the property of the object
              to the passed value. Example:
 iActiveSheet.SetProperty('Name', 'Accounts
                Nov')
- CallMethod - call a method of the object.
              Example:
 iSelectedSheet.CallMethod('PrintPreview', oi:False)
- Init - creates the object, using the passed
              name:
 iSheet.Init('ActiveSheet', ExcelBook.iApplication)  iSheet.GetChild('PageSetup', iPageSetup)
 centerFooter = 'My Worksheet'
 iPageSetup.SetProperty('CenterFooter', centerFooter)
- GetChild - gets a child object, such as a
              MailItem from a Folder or a Sheet from a Workbook.
- GetParent - retrieves the parent object.
 
- Added: A new PrintOut example application that
          demonstrates using the new printing options for both Word and Excel.
- Entirely new Report Output engine.
          
            - The new Editable Report output engine for Excel extends the
              output abilities and now creates well formatted Excel spreadsheet
              without requiring specific alignment and sizing of controls. 
- Intelligent column and row checking allows controls to be
              automatically assigned to the correct column and row without
              specific alignment requirement
- Improved report processing speed (additional performance
              improvements are coming in future releases).
 
 
        Word
 Word
      
        - Fixed/Improved: All the unit conversion methods (PicasToPoints,
          PixelsToPoints, PointsToCentimeters
          etc.) now take the correct parameter types, and return using
          appropriate types rather than passing and returning strings.
- Improved: All unit conversion methods are now optimized and no
          longer use a wrapper method.
- Added: Completed PointsToPixels and 
            PixelsToPoints methods.
- Fixed: The PrintOut method is now fully functional
          and allows completely automated printing without any user interaction.
          See the PrintOut example application, which also demonstrates the use
          of the new 
- Added: Event handling functions (Note that
            these are not tested or supported in this release).
          
            - oiWord.EventStartup( )
- oiWord.EventQuit( )
- oiWord.EventDocumentChange( )
- oiWord.EventDocumentOpen( )
- oiWord.EventDocumentBeforeClose( )
- oiWord.EventDocumentBeforePrint( )
- oiWord.EventDocumentBeforeSave( )
- oiWord.EventNewDocument( )
- oiWord.EventWindowActivate( )
- oiWord.EventWindowDeactivate( )
- oiWord.EventWindowSelectionChange ( )
- oiWord.EventWindowBeforeRightClick( )
- oiWord.EventWindowBeforeDoubleClick( )
- oiWord.EventEPostagePropertyDialog( )
- oiWord.EventEPostageInsert( )
- oiWord.EventMailMergeAfterMerge( )
- oiWord.EventMailMergeAfterRecordMerge( )
- oiWord.EventMailMergeBeforeMerge( )
- oiWord.EventMailMergeBeforeRecordMerge( )
- oiWord.EventMailMergeDataSourceLoad( )
- oiWord.EventMailMergeDataSourceValidate( )
- oiWord.EventMailMergeWizardSendToCustom( )
- oiWord.EventMailMergeWizardStateChange( )
- oiWord.EventWindowSize( )
- oiWord. EventXMLSelectionChange( )
- oiWord.EventXMLValidation( )
- oiWord.ErrorEventDocumentSync( )
- oiWord. EventEPostageInsertEx( )
- oiWord.EventMailMergeDataSourceValidate2( )
- oiWord.EventUnknown( )
 
  Excel
 Excel
      
        - Added PrintSheet method to print the current sheet
          and allow the page range and number of copies to be specified.
- Added PrintWorkbook method to print the current
          workbook and allow the page range and number of copies to be
          specified.
- Added _PrintOut method that handles sheet and
          workbooks printing (typically not called directly)
- Added GetActiveWorkbook method to retrieve and
          oiObject that represents the currently active Workbook object. This
          may not be the workbook that relates the the oiExcel object, it is
          whichever workbook is currently active in Excel. This allows the
          Workbook to be interacted with using the generic access methods
          provided.
- Added GetCurrentSheet method
- Added GetActiveSheet method
- Added SetActivePrinter  method (not
            currently supported)
- Added GetActivePrinter method
- Added GetWorksheets method
 
       
      Version 2.77 (20 July 2009)
        General
 General
      
        - Fixed: Fixed incorrect release dates and version number in the
          History doc.
- Fixed: Error in the C7 LIB that caused FM3 to not upgrade files.
  
        Excel
 Excel
      
        - Fixed: CloseWorkbook method returning 0 incorrectly when no
          parameter was passed to specify the behaviour (the workbook was
          correctly closed, but the return value was incorrect).
- Fixed: RenameWorksheet()
 
       
      Version 2.76 (14 July 2009)
        General
 General
      
        - Fixed: Fixed incorrect release date for 2.74 in the History
          document.
- Fixed: Compatibility problems with OfficeInside and editable reports
          between various versions of Clarion
- Fixed: Long standing issue with the editable report classes and a
          potential conflict with FM3, which prevented files from upgrading in
          some cases.
- Changed: The Editable Report classes now ship as source code and are
          added at the project level. The underlying classes are contained in
          _oiABPROI.clw and oiABPROI.inc and the ReportGenerator interface is
          defined in oiABPROI.clw.
  Word
 Word
      
        - Fixed: Fixed the SpaceBefore and SpaceAfter options of the
          SetParagraphFormatting not working correctly.
 
      Version 2.74 (06 July 2009)
        General
 General
      
        - Fixed: OfficeInside is now compatible with Clarion 7 is both Local
          and Standalone modes.
  Excel
 Excel
      
        - Fixed: The oiExcel.ExcelImport() method  was not correctly
          retrieving the filename from the user when no filename is passed. The
          method can be called with a blank file name, in order to prompt the
          user for the file to import:
 ExcelDoc.ExcelImport ('', ?Progress, numColumns, startRow)
- Added: Equates for passing to 
            oiExcel.CloseWorkbook( ) to determine the save behaviour:
 oix:Default   equate(1)
 oix:DontSave equate(2)
 oix:Save     equate(3)
- Fixed: The oiExcel.ExcelImport() method was prompting to save the
          document before closing.
- Fixed: The oiExcel.ExcelImport() method stopping before importing
          all rows if the startRow parameter was passed.
 
      
      Version 2.74 (19 June 2009)
         Outlook
 Outlook
      
        - Fixed: The Contact HomeAddressStreet property was not
          being updated when the UpdateContact method was called to update the
          entire contact from a group (updating the individual property worked
          correctly, as did retrieving the value from the Outlook contact). 
Version 2.73 (15 June 2009)
        General
 General
      
        - Fixed a compile error when using the Editable Report templates in
          current build of C7 (5675). The SoftVelocity ReportGenerator interface
          changed in this release (ProcessText reverted to the C6 protoype).
          This resolves the "No matching prototype available" error in
          oiABPROI.clw on compilation.
 
      Version 2.72 (11 June 2009)
        General
 General
      
        - Documentation improvements, new navigation and menu system etc.
- Changed: The oiBase.NewObject() method now requires the passed pItem
          to have been allocated before calling it (previously it allowed a null
          pointer to be passed, which would result in errors).
- Fixed: Memory leak in the oiExcel object because of handles to
          interfaces not being freed.
- Fixed a problem with methods ignoring calls because of an incorrect
          flag being set on intialisation (prevented Mail Merge from working in
          2.71).
  Excel
 Excel
      
        - Added: New oiExcel.Replace procedure to provide
          additional find and replace parameters (string pFind, string pReplace
          lookAt=0 searchOrder=1 lookAt=2 matchCase=0 matchByte=0). 
- Fixed: ReplaceText (): Changed internal calling to
          not pass the last two parameters (searchFormat and replaceFormat),
          neither of which was used. Also corrected one of the parameters being
          passed incorrectly.
- Changed: ReplaceText(): now returns True for success and False for
          failure. 
- Changed: ReplaceText(): The replacement string may be an empty
          string, it is perfectly legal to replace a string with nothing
          (removing it)
- Added: New internal method GetCells() returns the
          Cells range object.
- Added: In Progress. Please do NOT use this method in this release.
          New Find() method for returning the position of a
          specific string of text. Supports searching in either direction, case
          sensitive or insensitive searches, searching for exact matches or the
          search phrase within the string etc. Returns the cell that the match
          was found at.
- Added: oiExcel.DisplayAlerts() method allows the
          display of messages from Excel to be enabled or disabled
- Added: oiExcel.EnableEvents() procedure (currently
          this is internal)
- Added: oiBase.ToCstring(*string s) method. Copies
          the contents passed string to a new cstring and returns a pointer to
          the new cstring.
- Added: oiExcel.RunAutoMacros() method that allows
          the auto macros built into a file to be run (Auto_Activate,
          Auto_Close, Auto_Deactivate, and Auto_Open macros)
- Added: oiExcel.GetWorkbooks().
- Added: oiExcel.GetActiveWindow().
- Deprecated: CountWorkbooks_LB()
- Deprecated: NewWorkbook_LB()
 
      Version 2.71 (10 April 2009)
        General
 General
      
        - C7 support update for Multi-Proj.
- C7 support - template includes the oiABPROI.INC, Fomin support, 
          Report target selector, WOWordReporterDeclaration, legacy class
          generation when necessary.
- C7 support - uses the additional parameter in the implemented
          IReportGenerator.ProcessString class in C7.
  Outlook
 Outlook
      
        - Outlook (UpdateContact) - Updated to support all of the properties,
          optimised the update code and added a new GetContactPropertyName
          method to return the name when passed the long value for a field.
 
      Version 2.69 (11 September 2008)
        General
 General
      
        - Clarion 7 compatible release.
- Updated documentation and reformatted the oiExcel class
          documentation for improved clarity and consistency.
  Word
 Word
      
        - Added/Fixed: The FindText() method now returns 1 when the text that
          was search for is found, and zero if it is not found, which is the
          documented behaviour. The method now checks the Found property of the
          Find member of the Selection object to determine whether the search
          was actually successful. Previously the FindText() method was actually
          returning whether or not execution was successful, and the return
          value was not related to the result of the Find.
- Fixed: The MailMergeSetDataSource was always returning 0, even when
          successful. It now returns 1 for success and 0 for failure.
  Excel
 Excel
      
        - Added: 
            GetCellBackgroundColor() method returns the background color of
          a cell or range of cells. Can be called as:
 curColor = oiExcel.GetCellbackgroundColor('',
            '')
 curColor = oiExcel.GetCellbackgroundColor('A1', '')
 curColor = oiExcel.GetCellbackgroundColor('D1', 'E7')
 
       
       
      Version 2.68 (16 July 2008)
        Excel
 Excel
      
        General
 General
      
        - Documentation updates.
- Website pages were not correctly reflecting the version.
 
      Version 2.67 (02 July 2008)
        Word
 Word
      
        - Changed: Removed the temporary InitSite method.
  General
 General
      
        - Fixed: Incorrect style sheet in some of the documentation files.
- Added: The Microsoft Office Compatibility pack is now supported.
          Unfortunately the compatibility pack causes the incorrect version of
          Office to be reported, which was causing OfficeInside to specify the
          the Office 2007 format for spreadsheets, which the compatibility pack
          would be create, and convert as if it was an older binary Excel
          document, causing the document o become corrupt. This has been
          resolved in this release.
- Added: Error handling and logging to the email sending for Outlook.
- Important: With Outlook 2007 the
          Outlook Security model has changed. There are now three settings
          (accessible via Tools -> Trust Centre ->
            Programmatic Access):
          
            - "Warn me about suspicious activity when my antivirus
                software is inactive or out of date (recommended)". 
 This setting does not appear to function correctly when most
              setups. Presumably it is meant to allow the antivirus software to
              determine whether access is allowed or not. Instead in every
              configuration tested it simply blocks all access, which means that
              sending mail will fail because the Recipient object cannot be
              retrieved. Outlook provides no indication of the failure, or the
              reason for it.
- "Always warn me about suspicious activity". 
 This setting operates in the same manner as the security model in
              Outlook 2003, except that it introduces an even more onerous
              warning dialog box on mail sending. First the user is prompted to
              allow access to 1, 5 or 10 minutes, then when an email is sent a
              warning dialogue is displayed (because the first dialog is
              actually a security flaw). The second dialog does not allow the
              user to continue immediately, but instead displays a progress bar
              for a few seconds before the button can be pressed. This means
              that utilities such as "ClickYes" can no longer be used.
- "Never warn me about suspicious activity". 
 This setting allows all applications access, much like in Office
              2000 and XP.
- Unfortunately all three of the settings are essentially useless
              - either they are overly onerous for the user, or they provide no
              protection against malicious software (even the option to always
              warn of suspicious activity can be overridden by malicious
              software). One solution to this is to install the free Advanced
              Security for Outlook from MAPILabs
              (http://www.mapilab.com/outlook/security/). This allows the user
              to choose whether an application is trusted when it tries to
              access Outlook. This approach only requires the user to allow (or
              deny) an application access once, which provides good protection,
              without any burden on the end user. 
 
 
      Version 2.66 (11 June 2008)
        Word
 Word
      
        - Added: Additional errortrapping and error handling code for document
          and object creation.
- Changed: Changed the way that the Tables object was retrieved to
          improve reliability when processing multiple documents in a row.
  
        General
 General
      
        - Fixed: The Clarion 5.5 DLL that shipped with the 2.65 release was
          the 2.64 version.
 
       
      Version 2.65 (4 June 2008)
        Word
 Word
      
        - Added: [Beta] New PrintOut method that exposes all the print
          settings available in Word. This uses the new
          
            - Background (optional). True to have the macro continue
              while Microsoft Word prints the document.
- pAppend (optional). True to append the specified
              document to the file name specified by the OutputFileName
              argument. False to overwrite the contents of OutputFileName.
- pRange (optional). The page range. Can be one of the
              following WdPrintOutRange constants: wdPrintAllDocument,
              wdPrintCurrentPage, wdPrintFromTo, wdPrintRangeOfPages, or
              wdPrintSelection.
- OutputFileName (optional). If PrintToFile is True, this
              argument specifies the path and file name of the output file.
- pFrom (optional). The starting page number when Range
              is set to wdPrintFromTo.
- pTo (optional). The ending page number when Range is
              set to wdPrintFromTo.
- Item (optional). The item to be printed. Can be one of
              the following WdPrintOutItem constants: wdPrintAutoTextEntries,
              wdPrintComments, wdPrintDocumentContent, wdPrintKeyAssignments,
              wdPrintProperties, or wdPrintStyles.
- Copies (optional). The number of copies to be printed.
- Pages (optional). The page numbers and page ranges to
              be printed, separated by commas. For example, "2, 6-10" prints
              page 2 and pages 6 through 10.
- PageType (optional). The type of pages to be printed.
              Can be one of the following WdPrintOutPages constants:
              wdPrintAllPages, wdPrintEvenPagesOnly, or wdPrintOddPagesOnly.
- PrintToFile (optional). True to send printer
              instructions to a file. Make sure to specify a file name with
              OutputFileName.
- Collate (optional). When printing multiple copies of a
              document, True to print all pages of the document before printing
              the next copy.
- FileName (optional). The path and file name of the
              document to be printed. If this argument is omitted, Word prints
              the active document. Available only with the Application object.
- ActivePrinterMacGX (optional). This argument is
              available only in Microsoft Office 98 Macintosh Edition. For
              additional information about this argument, consult the language
              reference Help included with Microsoft Office 98 Macintosh
              Edition.
- ManualDuplexPrint (optional). True to print a two-sided
              document on a printer without a duplex printing kit. If this
              argument is True, the PrintBackground and PrintReverse properties
              are ignored. Use the PrintOddPagesInAscendingOrder and
              PrintEvenPagesInAscendingOrder properties to control the output
              during manual duplex printing. This argument may not be available
              to you, depending on the language support (U.S. English, for
              example) that you’ve selected or installed.
- PrintZoomColumn (optional). The number of pages you
              want Word to fit horizontally on one page. Can be 1, 2, 3, or 4.
              Use with the PrintZoomRow argument to print multiple
              pages on a single sheet.
- PrintZoomRow (optional) . The number of pages you want
              Word to fit vertically on one page. Can be 1, 2, or 4. Use with
              the PrintZoomColumn argument to print multiple pages on a single
              sheet.
- PrintZoomWidth (optional). The width to which you want
              Word to scale printed pages, in twips (20 twips = 1 point; 72
              points = 1 inch).
- PrintZoomHeight (optional). The height to which you want Word to
              scale printed pages, in twips (20 twips = 1 point; 72 points = 1
              inch).
 
- Added: [Beta] new task insert and update properties for use with the
          InsertTask, UpdateTask and GetTask/GetTaskQ methods:
          
            - oio:TaskCategories equate(13)
- oio:TaskCompanies equate(14)
- oio:TaskComplete equate(15)
- oio:TaskIsConflict equate(16) ! read only
- oio:TaskDateCompleted equate(17)
- oio:TaskTimeCompleted equate(18)
- oio:TaskIsRecurring equate(19) ! read only
- oio:TaskNoAging equate(20)
- oio:TaskOwner equate(21)
- oio:TaskPercentComplete equate(22)
- oio:TaskSize equate(23) ! size in bytes, read
                only
- oio:TaskStatus equate(24)
- oio:TaskStatusOnCompletionRecipients equate(25) !
              recipients who will receive notification on completion
- oio:TaskStatusUpdateRecipients equate(26) ! recipients
              who will receive notification when the task is updated
- oio:TaskTeamTask equate(27) ! set to true if this is a
              team task
- oio:TaskTotalWork equate(28)
- oio:TaskUnRead equate(29)
 
  General
 General
      
        - Documentation Updates and improvements
- Internal class additions and cleanup, new generic COM classes and
          access methods
- New internal generic Get/Set and Call methods
 
       
      Version 2.64 (04 April 2008)
        Excel
 Excel
      
        - Added: GetFileName() method
          that returns the name and path of the file on disk that is currently
          open.
- Changed: The ReadCell method
          now supports up to 4096 characters rather than 255 characters. This
          limitation will be removed in a future release.
- Added: The .excelFileName property to the Excel editable report
          class. This stores the file name that Excel returned once the file is
          saved.
 
        Word
 Word
      
        - Added: GetFileName() method that
          returns the name and path of the file on disk that is currently open.
- Fixed: Editable Report: Removed an extraneous call to Update() to
          change the application visibility after an editable report was
          created, but the application has already been closed by the Kill() and
          the file opened (if chosen) in a new instance using ShellExecute.
- Added: The .wordFileName property to the Word editable report class.
          This stores the file name that Word returned once the file is saved.
- [Editable Reports] Added: If the FileName is blank for the report
          output then the user is prompted for a file name automatically.
 
        General
 General
      
        -  Note: There is an issue with compatibility with FileExplorer in
          Clarion 5.5 when in Local Mode (duplicate symbol errors). This is not
          an issue with Clarion 6 or 7 and only occurs in Local Mode in Clarion
          5.5.
-  Fixed: the csWord.ico and csExcel.ico icons were not always being
          linked into the project automatically for Editable Report use with the
          TargetSelector.
-  Added: Multi-Proj support for automatically including required
          icons in the project.
- [Editable Reports] Fixed: The Excel and Word Editable report now
          uses the new excelFileName/wordFileName property to ensure the correct
          file name is always opened.
- [Editable Reports] Fixed:Removed an extraneous call to Update() to
          change the application visibility after an editable report was
          created, but the application has already been closed by the Kill() and
          the file opened (if chosen) in a new instance using ShellExecute.
- [Editalbe Reports] Added: Error handling and user information
          messages.
- Right Reports Integrations - CapeSoft
            Right Reports now supports outputting reports to fully editable
          Word and Excel documents using OfficeInside.
- General documentation cleanup and improvements.
 
        Outlook
 Outlook
      
        - Fixed: The DateReceived
          and TimeReceived
          properties contents were reversed when retrieving the list of
          messages.
- Added: SaveAs() method that allows
          the document to be saved to disk as a the following formats:
          
            - Microsoft Office Word format (.doc)
- HTML format (.html)
- iCal format (.ics)
- MIME HTML format (.mht)
- Outlook message format (.msg)
- Outlook Unicode message format (.msg)
- Rich Text format (.rtf)
- Microsoft Office Outlook template (.oft)
- Text format (.txt)
-  VCal format (.vcs)
- VCard format (.vcf)
 
 
       
      Version 2.63 (02 January 2008)
        Excel
 Excel
      
        - Added: ImportSetup() and ImportComplete()
          callback methods to allow the document to be modified before and after
          the actual import when using the ImportExcel() method.
- Fixed: The Report To Excel template was displaying a prompt to save
          the current sheet when used in versions of Office prior to 2007. The
          new version now supports all version of Office and correctly
          determines the version and saves the document appropriately.
- Added: Code for Excel and Word editable reports to check the version
          of Office being used do the file saving appropriately. Note:
          It is recommended that the file name is specified without a
            file extension, this will allow OfficeInside and the Office
          application to set the correct file extension (for example either .XLS
          or .XLSX).
  General
 General
      
        - Additional documentation updates, converted the bulk of the
          documentation to using style sheets, removed inline and outdated
          attributes, reduced the document sizes, added new method documentation
          and improved existing documentation with full parameter lists and
          descriptions, examples etc.
 
      Version 2.62 (11 November 2007)
        Outlook
 Outlook
      
        - Added a new GetEmailBody method to the Outlook object that is does
          not limit the size of the email body fetched, and returns the size
          required if the passed string reference is not large enough and the
          data has been truncated. The old method has a limit of 20,000
          characters. This is the method that is now called in the example
          application.
 
      Version 2.61 (17 October 2007)
        General
 General
      
        - Fixed the GetOfficeVersion function which was returning the
          incorrect version of Office for versions prior to Office 2007. This
          was causing a problem in SendTo.
 
      Version 2.60 (04 October 2007)
      
          General
 General
        
          - Fixed the editable reports example and removed an unnecessary
            Message() statement, also added both Word and Excel functionality to
            both examples. This should have been fixed in the previous release
            but the incorrect example was fixed. 
- Closed (cannot reproduce): Case 1582: Office Inside not working
            with Office 2003 SBE. OfficeInside has been tested using Office 2003
            SBE under both Windows XP and Vista without any problems.
- Added: More documentation updates, fixed missing links in the new
            method listing, updated documentation for method, converted
            documentation to all CSS for styling to improve consistency and
            speed (reduced the page size).
- Added a GetOfficeVersion() method that returns the version of
            Office installed. This is particularly useful for determining
            whether Office 2007 (12) is installed and hence the default document
            format being used (.xlsx, .docx etc.)
  Word
          Word
        
          - Confirmed Behaviour: Case 1486: ReplaceText() has a 256 character
            limit in Word. This is an intrinsic limitation of MS Word, not of
            OfficeInside. The workaround is to use the Find method to find and
            select the text to replace, and then use the InsertText to insert
            text if more than 256 characters are needed. This has been
            documented for the ReplaceText
            method, along with the workarounds (such as putting your large
            string on the clipboard and calling MyWord.ReplaceText('LookFor',
            '^c', true).
            The 2-character string '^c' will be
            interpreted by Word as the Paste command. 
- Fixed: Case 1367: GotoEndOfDoc doesn’t go to last character. The
            new GotoItem method that this calls fixes the various bugs and
            problems that existed with this method. The GotoItem can be use to
            go to the last line in the document, which will actually also go to
            the end of the document (selection moves to after the last line).
            Similarly going to the first line goes to the start of the first
            line (the beginning of the document).
- Fixed: Case 1366: GetFontSize returning invalid result - the
            GetFontSize method was returning a large integer rather than the
            correct font size.
  Excel
 Excel
        
          - Added: Support for saving to the new XLSX format for the editable
            report templates. If now uses the default format specified by Excel,
            which ensures that the Compatibility dialog box is not displayed. It
            is recommended that you do not specify the file extension when
            specifying the file name, which allows Excel to pick the correct
            file extension based on the format used.
 
      
       
      Version 2.50 (12 September 2007)
      
          General
            General
        
          - Fixed the Editable Report templates for Word and Excel, they were
            not sharing the same TargetSelector object unless it was specified
            manually and with some configurations it was possible to have two
            independent TargetSelectors declared in a single procedure.
- More documentation updates for Word and Excel.
- Note: For the Word and Excel
            editable reports in Legacy you must have at least one of the SV
            report output templates added. For ABC this limitation does not
            apply. Full Legacy support will be added in a future release to
            remove this limitation.
  Word
          Word
        
          - Added: Two new methods for AutoFormat support for tables. This
            allows one of the built-in tables styles in Word to be applied to
            any table automatically. This also solves the problem under Word
            2002 where an auto style is selected as default and that style is
            applied to any tables inserted. See the oiWord.TableAutoFormat()
            and oiWord.TableUpdateAutoFormat()
            method for more information.
- Added Auto Formatting support to the example application for
            tables, support all of the around 30 different styles.
- Closed: Case 1583: Cannot reproduce in the current
            build. oiWord.TableSetCellBold setting the style for the whole
            column. This is not reproducible, using either the
            oiWord.TableSetCellBold() method or the normal methods for setting
            the current selection to Bold, Italic etc. Also tested to ensure
            that the Toggle commands work as well as On/Off for styles. Test
            with bold, italic, underlined and combinations. 
- Added: New FindText() method
            search for a string and selects the next instance found, allowing
            each instance of a string to be found and modified (the style
            changed, or the actual string changed etc.).
- Fixed: Case 1368: GotoItem method not working. This method has
            been completely replaced and now works for all of the options
            available. Also note that this method now works as expected, so a
            number of workarounds are no longer needed. See the new oiWord.GotoItem()
            documentation for more information.
- Confirmed Behaviour: Case 1486: ReplaceText() has a 256 character
            limit in Word. This is an intrinsic limitation of MS Word, not of
            OfficeInside. The workaround is to use the Find method to find and
            select the text to replace, and then use the InsertText to insert
            text if more than 256 characters are needed. This will be documented
            for the ReplaceText
            method.
  Excel
 Excel
        
          - Closed: Case 1478: Cannot reproduce in the current build:
            SetCellFormat does not appear to be working fully. Test all possible
            cell formatting options, along with a large number of combinations.
            All are working correctly.
 
      
       
      Version 2.40 (10 September 2007)
      
          General
            General
        
          - Added a Clarion 7 build.
- New documentation and changes to the existing documentation. All
            method, properties and data types for Word and Excel are being
            documented and the documentation completely overhauled, in line with
            the new Outlook documentation.
- Fixed invalid tags and attributes in documentation, added
            accessibility, fixed non html encoded characters etc.
- Changed and Fixed the RecentFiles classes. They are now
            initialised only for Word and Excel (PowerPoint can also be made
            available) and they correctly list everything the the Recent Files
            list for both applications. The list and objects are initialised
            when the object is, and the list is available as soon as the
            application has started (directly after the call to the Init()
            method returns).
- Added a RecentFiles tab to both the Excel and Word examples that
            displays the Recent File list for each application.
- Major cleanup of the documentation, all documentation will be
            moved to XHTML 1.0 Strict, and use CSS for formatting. This will
            improve load performance, accessibility and consistency. A large
            number of errors, formatting problems and code issues have been
            fixed.
- Added a new section to the documentation indicating how to
            dynamically create OfficeInside objects using the New command. Important: If you New an OfficeInside
            object you must set the .disabled property to 1
            before the call to the Init method or the call to Init() will not
            work, and subsequent calls to the methods of the object will not
            work.
  Word
          Word
        
          - Fixed the RecentFiles list, it was not returning the list of
            recent files due to an initialisation error.
- Note: Event handling is currently being worked on, it has not been
            enabled since OfficeInside moved to late bound in 1.40 Beta. Currently event handling is only working for
              Outlook.
- Changed: The oiWord.Update() method. The Option parameter was
            optional, but required in order for any code to execute. It is not
            an optional parameter and is no longer passed as such.
- Fixed: Case 1561: Opening and closing two instance of Word on two
            threads produces a normal.dot error. Can no longer reproduce this in
            the current release of OfficeInside.
- Fixed: Case 1470: TableSetInsideBordersLineStyle equates were
            incorrect and setting the style resulted in the style being set to
            the next one in the style list.
- Fixed: Case 1560: TableSetOutsideBordersLineStyle was not working
            at all, it is now correctly setting the table borders.
- Added: Case 1404: Add support for Document Protection. You can now
            Protect and Unprotect any document, including choosing the type of
            protect (read only, edit comments only, edit form fields only, make
            revisions only, or no protection). See the oiWord.Protect()
            and oiWord.Unprotect() method. A
            password is used if specified.
 
          Excel
 Excel
        
          - New methods to for importing Excel files. Replaces the old
            ImportXLSFile() method. The new method is ExcelImport()
            and calls the new TakeImportRecord()
            callback method. No longer has any limitation on the number of
            columns imported, any number of columns can be imported.
- New ColumnName() method
            replaces the old GetColumnAddressFromColumnNumber() method removes
            the 26 column limit - column numbers up to 450,000 are now supported
            making this method quite future proof (Excel 2007 supports 16K
            columns and earlier versions supported 255 columns). The old method
            is deprecated, but will still be supported and simply calls the new
            ColumnName() method.
- Important: If you
            are using the 'Import XLS To TPS' control template (now called
            'Import and Excel File') then you must move
            your code for processing each record from the old
            ImportXLSFile_TakeRecord() method to the new TakeImportRecord()
            method. Also note that instead of each column being passed as a
            parameter the columns are now passed using a queue.
- Fixed the RecentFiles list, it was not returning the list of
            recent files due to an initialisation error.
- New alignment options for oiExcel.SetCellAlignment:
            
              - oix:WrapText
- oix:HorizontalAlignment
- oix:VerticalAlignmentszMemberof
- oix:Indent
- oix:ShrinkToFit
- oix:TextDirection
- oix:Orientation
 
- In addition alignment equates for each of the options was added
            (see the SetCellAlignment()
            documentation)
- New documentation for SetPaletteColor()
            and GetPaletteColor(),
            including three examples, and an example of two complete procedures
            for implementing local color palette management. Fully documented
            how Excel uses colors and the difference between passing clarion
            color equates and actual color values using the
            oiExcel.InterpretClarionColorEquates property.
- SetCellNumberFormat()
            now supports any format and picture that Excel supports, also fully
            documented how to create custom pictures and formatting, and to use
            Excel to generate a picture for any possible format needed.
 
  Outlook
          Outlook
        
          - Added: New properties to the oioFolderItemsQType. This queue is
            used to store the contents of the folder in Outlook. The following
            properties are now available when using the
            oiOutlook.GetMailItemsQ() method. Note that the oioFolderItemsQType
            has changed to reflect the new properties. If you are using your own
            manually declared queues rather than the types provided by
            OfficeInside you will need to update your queue declaration. Please
            note that this is strongly not recommended.
            
              -  Categories
-  Companies
-  FlagRequest
-  Importance
-  IsMarkedAsTask
-  LastModificationTime
- LastModificationDate
-  ReceivedByName
-  ReceivedTime
- ReceivedDate
-  ReplyRecipientNames
-  SentOnBehalfOfName
-  UnRead
 
- Fixed: Case 823: Address Book reading GPFs with more than 350
            contacts. This error cannot be reproduced in the current release,
            even with far more than 350 contacts
- Fixed: Case 824:  Start Date and Start Time not read from Outlook
            when reading Tasks
- Added: New properties when reading Tasks to the oioTasksQType1 and
            oioTaskProperties structures (Writing to
              these properties will be supported in the next release.):
            
              - Categories
- Companies
- Complete
- IsConflict
- DateCompleted
- TimeCompleted
- IsRecurring
- NoAging
- Owner
- PercentComplete
- Size
- Status
- StatusOnCompletionRecipients
- StatusUpdateRecipientsTeamTask
- TotalWork
- UnRead
 
       
      
        Version 2.36 (23 July 2007)
      
          General
            General
        
          - Fixed: Compile error (unresolved external) in C55. The DLL for C55
            was not correctly compiled, and an old DLL was included in the
            install.
 
      
      
        Version 2.35 (11 July 2007)
      
          General
            General
        
          - Documented a number of DLL functions that can be called from
            anywhere within an application using OfficeInside (no object needs
            to be instantiated to call these functions). See the DLL
              Functions section.
- Exposed the oiBaseToDec() and oiDecToBase() DLL functions.
 
      
       
      
        Version 2.34 (06 July 2007)
      
          General
            General
        
          - When using the Excel.dontCloseOnKill
            or the Word.dontCloseOnKill
            option the instance of Word or Excel is now automatically made
            visible and the display refreshed (and automatic display refreshing
            enabled if it was disabled).
- Corrected the dates in the History for all releases in 2007 (they
            were listed as 2006).
- Updated the Editable Reports example. Clarified the options, redid
            window layout, provided new instructions etc. The example now
            demonstrates the different options setting the report target. The
            hand code required will be moved to template options.
- Added support for Multi-Proj
  Word
          Word
        
          - Updated documentation for the ScreenRefresh()
            method.
- New editable report template, generates all code needed, supports
            other report generators (such as those provided by SoftVelocity),
            allows the user target selection dialog box to be controlled etc.
  Excel
 Excel
        
          - New editable report template, generates all code needed, supports
            other report generators (such as those provided by SoftVelocity),
            allows the user target selection dialog box to be controlled etc.
- New SaveAs
            method and documentation, now support specifying a file format to
            save the file as, which is useful for ensuring that a standard XLS
            file is saved with Office 2007, and ensuring that the Compatibility
            dialog is not displayed.
      
        Version 2.33 (07 February 2007)
      
          General
            General
        
          - The template now generates return values for method declarations
            that return values and correctly returns the parent's return value
            by default. Solves the "Function did not return a result" compiler
            warnings.
- Installer is now cryptographically signed by Capesoft Software
            (Pty) Ltd. Ensures the validity of the installer and avoids the
            "unsigned file" security warning. Also allows the installer to run
            correctly under Windows Vista.
      
        Version 2.32 (07 February 2007)
      
          General
            General
        
          - Fixed the dontCloseOnKill option for use with Word
            and Excel, it was
            allowing Word and Excel to close when Kill() was called and it had
            been set to a non zero value.
 
      
      
        Version 2.31 (06 February 2007)
      
          General
            General
        
          - Updated documentation to reflect newly added methods for spell
            checking etc. SpellCheckString,
            SpellCheckHtml, SpellWord.
            These method will be used to clean up the template generated spell
            checking. In addition they provide improved support and
            functionality.
- Added example code using SpellCheckString and SpellCheckHtml,
            which show how the methods work, as well as providing an example of
            spell checking a FileExplorer control.
- General documentation update (ongoing) to document every method
            and property, add examples for every method, document all
            parameters, return values and add cross referencing!
- New Properties sections added to Word and Excel docs, and new
            Methods tables added.
 
      
      
        Version 2.30 (02 February 2007)
      
          General
            General
        
          - New Office01.tpw for handling classes and objects, maintains
            backward compatability while supporting all possible parameters etc.
          
- Fixed template bug that was not generating parent called with
            pointer to typed queues corrected.
- Template: Added support for additional data types in the method
            declarations.
- Update the template that generates object and method declarations,
            and fixed a number of small issues.
  Excel
 Excel
        
          - Documented the two templates to import from Excel. See the Import
From
              Excel templates section.
- Udpated document, new example code for WriteToCell (shows how to
            export a table to an Excel file), clean up documentation example
            code, added syntax highlighting etc. Documentation will be
            overhauled as the Outlook docs have already been.
- New section in the documentation on class properties.
- New dontCloseOnKill
            property allows the OfficeInside object to be killed while leaving
            Excel open.
  Word
          Word
        
          - New SpellChecking
            methods.
- New method to check the spelling of all words in a string and to
            encapsulate spelling (CheckSpelling). 
- Add a CheckSpellingHtml
            method to allow HTML to be spell checked.
- Added support for punctuation to the spell checker so that
            additional punctuation is not incorrectly determined as part of the
            word.
- Optimised spell checked and improve process speed of splitting the
            string into words, removing punctuation etc.
- Added support for ignoring URL Encoded characters in HTML.
- Added support for ignoring HTML Escape code such as  
- Additional documentation on Spell Checking and RTF controls, new
            FAQs, links in the docs and cross referencing etc.
- New dontCloseOnKill
            property allows the OfficeInside object to be killed while leaving
            Word open.
       
      
        Version 2.21 (23 January 2007)
      
          Excel
 Excel
        
          - Fixed the PrintMe() method wich stopped working the the previous
            release. 
      
        Version 2.20 (16 January 2007)
      
          Word
          Word
        
          - Fixed the MailMerge example in the Clarion 6 Demo, now uses a CSV
            file, fixed issues with dialog boxes displaying and problems reading
            the data from the file etc
- Case 1126: oiWord.InsertTable() fails when too many rows are
            specified (stops editable reports working):
 Fixed this using the Table.Rows.Add() method. Now the Tables.Add()
            call always adds a single row table, and Table.Rows.Add()is called
            in a loop to add the rest of the rows. No real speed difference and
            there is now no limitation on the number of rows being added.
            Although the MS Documentation for the Add() method of the Tables
            Collection seems to indicate that there is no limit to the number of
            added rows(other than the 32 bit signed integer being passed), all
            the examples provided seem to use the Table.Rows.Add() method in a
            loop, indicating that this appears to be a known(and ignored)
            behavior.
- Updated spell checking templates, fixed a potential problem with
            C55 and spell checking with RTF controls, where they were spell
            checked before any other controls.
- Created new C55 and C6 specific examples for spell checking, show
            the two different approach needed for RTF controls in the two
            different version.
- Added SetScreenUpdating()
            and ScreenRefresh() methods to
            allow screen updating to be turned off when writing data to Word
            (provides a small performance improvement) and ScreenRefresh()
            allows the screen to be refreshed manually.
- Updated documentation and began documentation rewrite.
  Outlook
          Outlook
        
          - Modified the Address Book example to use a queue declared in the
            data section. Although it is recommended that you use the data types
            provided for Contacts, Tasks, Appointments, Folders and Messages,
            the Clarion listbox editor does not allow you to populate the fields
            easily, and so to make the example easily modifiable we have opted
            to declare the queue as local data.
  Excel
 Excel
        
          - Began rewrite of docs. This will be a full rewrite as has been
            done with the Outlook docs
- New Methods:
            
              - SetCalculations:
                Allows automatic calculation of each inserted or edited cell in
                Excel to be turned off. This can dramatically increase the speed
                of writing large numbers of cells to Excel, and once complete
                automatic calculation can be turned back on using the same
                method.
- Calculate: Forces the values
                of all formulas in all open workbooks to be calculated. Useful
                if SetCalculations has turned off automatic cell value
                calculation and the values need to be calculated at some point.
- SetScreenUpdating:Allows
                screen updating to be turned off and on in Excel. This can also
                dramatically improve performance when inserting large numbers of
                cells.
 
- The new methods for optimisation have been implemented in the
            editable report templates etc. to improve performance. This has
            provided a small improvement in output speed to Word, and a very
            large performance improvement in outputting to Excel (in some cases
            as much as a hundred times faster).
  Other
          Other 
        
          - Added support for the Recent Files classes to the demo application
- Global and Local templates: cleaned up tabs, moved overlapping
            text, added descriptions to tabs, made RTF info version specific for
            C55/C6 etc.
- New utility functions:
            
              - oiDecToBase: Converts from a decimal (base 10) to any other
                base, for example Hexidecimal (base 16), binary (base2) etc.
- oiBaseToDec: Converts from any base to a decimal number. For
                example convert Hexidecimal or binary to decimal.
 
- New Classes for all the applications representing the Recently
            Used Files objects:
            
              - oiRecentFiles: Stores a list of recent files for all of the
                Office applications (Word, Excel, Powerpoint and Outlook). This
                class is automatically initialised when the main object is, and
                filled with a list of recent files, which can then be accessed
                by looping through the queue. The class also contains methods to
                refresh the queue, delete files, open files etc.
- oiRecentFile: Class used by the RecentFiles class, and
                represents an individual file in the list. This class will
                typically not be accessed directly.
 
- New oiBase class that the original Office Inside classes inherit
            from, as well as the new child classes (such as RecentFiles). The
            oiBase class provides NewObject, CallMethod, GetProperty and
            SetProperty methods, and neatly encapsulates access to the
            properties and methods of the COM objects encapsulated by Office
            Inside. It is intended to also provide an interface for exposing COM
            objects that have not otherwise been exposed by Office Inside.
- Moved all functionality into the C55 compatible demo application.
            Functionality will no longer be split between C55 and C6 in the main
            Demo. For features that differ in C55 and C6 (or like editable
            report are only available in C6) separate examples will be include.
- Moved editable reports to a separate example.
- Editable reports no longer require either C6 EE or the SV Advanced
            Report Output Templates, they now only require Clarion 6. See the
            new Editable Report Example for the optional code to allow the use
            of editable reports without the SV templates.
- Editable reports now start hidden and only display when complete
            (if the template setting to display the document is turned on).
- Note: The RecentFiles class and
            other new base class method have very rudimentary document and will
            be fully documented in the next release. The RecentFiles class usage
            is demonstrated in the main OffDemo.app example application on the
            Word_Main window (procedure)
      
        
        Version 2.11 :  (08 December 2006)
      
        - New classes (to be documented and functional in the next release):
          RecentFile, RecentFiles
- New Data type (to be documented and functional in the next release):
          RecentFilesType
- Completely rewritten documentation for the Outlook class. Every
          single method, property, data type and equate have been documented.
          Quickstart sections showing how the objects work have been added,
          along with improved formatting and clarity. Every method has all
          parameters, the return values, related class properties, data types
          and equates listed, along with an actual example of its use. In
          addition every method now has a See Also section that cross references
          it with all related methods.
Version 2.10 :  (17 November 2006)
      
        - Added support for spell checking RTF text boxes and RTF controls
          populated using the RTF template in both ABC and Legacy for Clarion 6.
- Added Clarion 5.5 RTF Spell Checking control template. In order to
          add spell checking to a Clarion 5.5 RTF control populate the 'Office
          Inside Spell Check for C55 RTF' spell checking control template onto
          the window for each RTF control that needs spell checking. This adds a
          "check spelling" button which then checks the spelling of the control.
          This is necessary simply because of the design of the C55 RTF control
          and class. See the section on C55 RTF
            Controls.
- Added support for FileExplorer and Office Inside on the same window
          and the same thread. There is now a "Activate compatibility with File
          Explorer" on the local extension of the Office Inside object. Tick
          this box only if you are using Office Inside on the same procedure as
          FileExplorer. If you are calling the Init method manually the you need
          to set the oiOffice.noComInit property of the object
          to 1 before calling the Init() method.
- Changes to the manner in which Office Inside is initialised to
          allowing another object or control outside of Office Inside to
          initialise COM. This allows the above feature of compatibility with
          File Explorer, but also allows the use of Office Inside with other COM
          objects that need to initialise the COM interface themselves.
- Add the first set of changes to the documentation. All objects,
          method, properties, data types etc. will be fully documented and the
          existing documentation enhanced to provide better examples, as well as
          better explanations of the method, their parameters, return types,
          requirements etc.
- Fixed: Spell check template used the an embed for alertkeys in
          Legacy that did not work in some instances. Simplified the code to use
          a single embed for both ABC and Legacy. Thanks to Jorge Alejandro
          Lavera for not only reporting this, but suggesting the solution too.
 
        Version 2.01 :  (30 August 2006)
      
        - Added support for Text Boxes on Editable Word and Excel reports.
- Updated documentation for oiOutlook.GetMailFoldersQ