NewInspector() won't help you at all for the preview pane, that's for items
that are being opened, not previewed. You need to handle
Explorer.SelectionChange() for the ActiveExplorer to know what is now
selected and in the preview pane. You would work with the Selection
collection.
Previewing custom forms in the preview pane won't work though, they are
blocked from previewing. You could change the MessageClass and save the item
to preserve the change, but for a custom form you'd just end up with the
preview pane showing the "can't show this message" warning.
--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm
"dmjames" <(E-Mail Removed)> wrote in message
news:37FEE281-4404-42C5-8CC1-(E-Mail Removed)...
> Forgot to mention, OL2003 SP3.
>
> "dmjames" wrote:
>
>> I'm trying to change MessageClass when an item is opened so as to open a
>> custom form. My code works fine when the Preview Pane is closed; it
>> doesn't
>> work when the pane is open. I've tried changing the form, clearing forms
>> cache, etc.; I'm sure it's not a form problem. I've tested and tried it
>> many
>> times -- the behavior is that it works when Preview Pane is closed, and
>> opens
>> the default IPM.Note when the Preview Pane is open. (If anyone is
>> curious,
>> my ultimate goal is to provide a preview tab where all text in the
>> message is
>> changed to an easy-to-read font, but not change the message permanently.)
>>
>> Here's my code:
>>
>> 'CONNECTION CODE
>>
>> Option Explicit
>>
>> Dim WithEvents objInsps As Outlook.Inspectors
>>
>> Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal
>> ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As
>> Object, custom() As Variant)
>> Set objInsps = Application.Inspectors
>> AddInInst.object = Me
>> End Sub
>>
>> Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As
>> AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
>> Set objInsps = Nothing
>> End Sub
>>
>>
>> Private Sub objInsps_NewInspector(ByVal currInsp As Inspector)
>> Dim ci As New clsInspectors
>> If currInsp.CurrentItem.Class = olMail Then
>> If currInsp.CurrentItem.MessageClass = "IPM.Note" Or
>> currInsp.CurrentItem.MessageClass = "IPM.Note.Preview" Then
>> If currInsp.CurrentItem.EntryID <> vbNullString Then 'Sent
>> Set ci = InspColl.Add(currInsp,
>> currInsp.CurrentItem.entryid) 'collection of clsInspectors
>> ci.IID = currInsp.CurrentItem.EntryID
>> ci.FirstActivation = True
>> End If
>> End If
>> End If
>> End Sub
>>
>> 'CLSINSPECTORS
>>
>> Option Explicit
>>
>> Public WithEvents currInsp As Inspector
>> Public IID As String
>> Public FirstActivation As Boolean
>>
>> Private Sub currInsp_Activate()
>> If FirstActivation Then
>> currInsp.CurrentItem.MessageClass = "IPM.Note.Preview"
>> currInsp.CurrentItem.Save
>> 'The custom form contains a preview control on a tab called
>> Preview,
>> which I populate here
>> 'If the preview pane of the explorer from which I opened the item
>> is
>> visible, currInsp.ModifiedFormPages("Preview") returns Nothing
>> FirstActivation = False
>> End If
>> End Sub
>>
>> Private Sub currInsp_Close()
>> currInsp.CurrentItem.MessageClass = "IPM.Note"
>> currInsp.CurrentItem.Save
>> InspColl.Remove IID
>> End Sub
>>
>> Thanks,
>>
>> Dave James