Inspector and adding a custom toolbar

G

Guest

I don't think I explained it correctly in my last message; I don't want to
add a button to the standard menu, I want to make that when I open a contact
(inspector class) a new toolbar opens with my new button. I have no problem
with adding one to the explorer...but when I try to add it to the inspector I
get "Object reference not set to an instance of an object.". So I know I'm
doing it wrong. Any help?
 
M

Michael Bauer [MVP - Outlook]

Am Sat, 2 Sep 2006 16:16:02 -0700 schrieb Paul Heinisch:

I don´t know what you "last message" is, hopefully I don´t miss anything:
use the Inspector.Commandbars (instead of Explorer.Commandbars) in the
NewInspector event.
 
G

Guest

I did...but I get an error message each time its run...object reference not
set to an instance of an object...
 
M

Michael Bauer [MVP - Outlook]

Am Mon, 4 Sep 2006 07:45:02 -0700 schrieb Paul Heinisch:

Please show your code.
 
G

Guest

Public Class Connect

Implements Extensibility.IDTExtensibility2

Dim oApp As outlook.Application
Dim addInInstance As Microsoft.Office.Core.COMAddIn
Dim newToolBar As office.CommandBar
Dim WithEvents firstButton As office.CommandBarButton

Dim WithEvents selectInspector As outlook.Inspectors


Public Sub OnBeginShutdown(ByRef custom As System.Array) Implements
Extensibility.IDTExtensibility2.OnBeginShutdown
End Sub

Public Sub OnAddInsUpdate(ByRef custom As System.Array) Implements
Extensibility.IDTExtensibility2.OnAddInsUpdate
End Sub

Public Sub OnStartupComplete(ByRef custom As System.Array) Implements
Extensibility.IDTExtensibility2.OnStartupComplete

selectInspector = oApp.Inspectors
AddHandler selectInspector.NewInspector, AddressOf
Me.NewInspector_Event

End Sub

Public Sub OnDisconnection(ByVal RemoveMode As
Extensibility.ext_DisconnectMode, ByRef custom As System.Array) Implements
Extensibility.IDTExtensibility2.OnDisconnection
End Sub

Public Sub OnConnection(ByVal application As Object, ByVal connectMode
As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As
System.Array) Implements Extensibility.IDTExtensibility2.OnConnection
oApp = CType(application,
Microsoft.Office.Interop.Outlook.Application)
addInInstance = CType(addInInst, Microsoft.Office.Core.COMAddIn)

End Sub

Private Sub NewInspector_Event(ByVal new_Inspector As outlook.Inspector)

new_Inspector.Activate()
newToolBar = Nothing
Call Me.AddToolbar()


End Sub

Private Sub AddToolbar()
Try

Dim button_1 As office.CommandBarButton

If newToolBar Is Nothing Then
Dim cmdBars As office.CommandBars =
oApp.ActiveInspector().CommandBars
newToolBar = cmdBars.Add("NewToolBar",
office.MsoBarPosition.msoBarTop, False, True)
End If
Try
button_1 = CType(newToolBar.Controls.Add(1),
office.CommandBarButton)
With button_1
.Style = office.MsoButtonStyle.msoButtonCaption
.Caption = "Button 1"
.Tag = "Button1"
End With
If Me.firstButton Is Nothing Then
Me.firstButton = button_1
AddHandler firstButton.Click, AddressOf buttonClick
End If

newToolBar.Visible = True
Catch ex As Exception
MsgBox(ex.Message)
End Try
Catch ex As Exception
MsgBox(ex.Message)
MsgBox(ex.StackTrace)
End Try
End Sub



Private Sub buttonClick(ByVal ctrl As office.CommandBarButton, ByRef
Cancel As Boolean)
MsgBox("You clicked: " + ctrl.Caption)
End Sub




End Class
 
K

Ken Slovak - [MVP - Outlook]

Don't try to activate the Inspector in the NewInspector event handler.
Handle the Inspector events and in the Activate event create your toolbar.
 
G

Guest

I did that...but I'm still getting an error message :blush:bject reference not set
to an instance of an object....on this line:

Dim cmdBars As office.CommandBars = oApp.ActiveInspector().CommandBars

What am I doing wrong? Thanks for your help!

Paul
 
K

Ken Slovak - [MVP - Outlook]

That's something to find out in the debugger. Is oApp valid at that point?
Is there an ActiveInspector object? It's hard to debug when multiple dot
operators are used, any break in the chain of instantiated items can cause
that error.

Are you keeping alive references to things you add that must be global or
module level? Unexpected garbage collection is a very common problem with
..NET code, things get collected and no longer are valid object references.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top