A Microsoft Outlook email forum. Outlook Banter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » Outlook Banter forum » Microsoft Outlook Email Newsgroups » Outlook and VBA
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

Problem in permanent type add-in toolbar



 
 
Thread Tools Search this Thread Display Modes
  #1  
Old December 15th 09, 09:44 AM posted to microsoft.public.outlook.program_vba
paresh
external usenet poster
 
Posts: 66
Default Problem in permanent type add-in toolbar

Hi, I have been facing a issue with dealing with my add-in toolbar. I want to
make my toolbar permanent so that use can hide and reposition it
permanently(even after restarting Outlook). At the same time, I want to
support my add-in toolbar for all opened Outlook explorer.

I want to make sure that at any point of time there must be one and only one
toolbar on any Outlook window. I have tried below methods but none worked:

1. Tried deleting toolbar on shutdown. This doesn't delete the toolbar and
each restarting outlook adds new toolbar.

Private Sub AddinInstance_OnBeginShutdown(custom() As Variant)
MyCommandBar.Delete
End Sub

Private Sub AddinInstance_Terminate()
MyCommandBar.Delete
End Sub

2. I tried deleting toolbar on Explorer close event but didn't work.
Whenever I open Outlook folder by right clicking it and selecting "Open in
new window", it keep adding new toolbar but does't delete.

Private Sub myExpl_Close()
MyCommandBar.Delete
If out_appt.Explorers.Count 1 Then
Set myExpl = Nothing
Set myColExpl = Nothing
End If
End Sub

3. Tried checking existence of toolbar but this will not add toolbar when I
right click on outlook folder and open in new window.

Set MyCommandBar = myExpl.CommandBars.Item(TOOLBARNAME)
If Not MyCommandBar Is Nothing Then
MsgBox "exists"
Exit Sub
End If

Could anyone please help me here. I think if I can do any of below then I
would all set he
1. Delete existing toolbar while closing explorer event
2. Check the existing of toolbar explorer wise. Though I am setting
myExpl to currently active explorer, my code always returns true for
"myExpl.CommandBars.Item(TOOLBARNAME)" whenever I open outlook folder in new
window.

Thanks.

=== MY CODE ===

Option Explicit
Public out_appt As Outlook.Application
Public WithEvents MyButton As Office.CommandBarButton
Public MyCommandBar As Office.CommandBar
Public WithEvents myColExpl As Outlook.Explorers
Public WithEvents myExpl As Outlook.Explorer
Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)
Set out_appt = Application
End Sub
Private Sub AddinInstance_OnStartupComplete(custom() As Variant)
Set myColExpl = out_appt.Explorers
If out_appt.Explorers.Count 0 Then
Call CreateToolBar
End If
Exit Sub
End Sub
Private Sub myColExpl_NewExplorer(ByVal Explorer As Outlook.Explorer)
If myExpl Is Nothing Then
Set myExpl = Explorer
End If
If out_appt.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub
Private Sub myExpl_Close()
MyCommandBar.Delete
If out_appt.Explorers.Count 1 Then
Set myExpl = Nothing
Set myColExpl = Nothing
End If
End Sub
Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,
CancelDefault As Boolean)
On Error Resume Next
MsgBox "button clicked"
End Sub
Private Sub CreateToolBar()
If out_appt.Explorers.Count = 0 Then
Exit Sub
End If
Set myExpl = out_appt.ActiveExplorer
Const TOOLBARNAME = "My Toolbar"

' Set MyCommandBar = myExpl.CommandBars.Item(TOOLBARNAME)
' If Not MyCommandBar Is Nothing Then
' MsgBox "exists"
' Exit Sub
' End If
'
Set MyCommandBar = myExpl.CommandBars.Add(TOOLBARNAME, msoBarTop, False,
False)
Set MyButton = MyCommandBar.Controls.Add(msoControlButton, , "890", ,
False)
With MyButton
.Caption = "&Foo Button"
.Enabled = True
.OnAction = "!PermToolbarTesting.Connect"
.Tag = "890"
.FaceId = 362
.Style = 3
.Visible = True
End With
MyCommandBar.Visible = True
End Sub

Ads
  #2  
Old December 15th 09, 03:18 PM posted to microsoft.public.outlook.program_vba
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Problem in permanent type add-in toolbar

I'll answer this one. Don't make your UI permanent. That would leave it
there even if your addin isn't running or even if it's uninstalled. Always
add any UI you add as temporary.

You should be using different Explorer objects for each open Explorer in the
Explorers collection. You add an Explorer class wrapper to a collection when
a new Explorer is opened and remove it when it is closed. You do that in
Explorers.NewExplorer(). The wrapper class should declare any Explorer
events you intend to handle as well as your CommandBarButton events and
declarations for your UI and any folder events.

When you add an Explorer to your wrapper collection you then add the UI in
the first Explorer.Activate() event. For an initial Explorer you bypass
that. You hold a key value that's an index into the collection for each open
Explorer. You add that to a Tag value to get a unique Tag value for each
menu/toolbar/button. That way you can identify each one and get unique
clicks for each.

You can download a template project in VB6 that shows how to work with
wrapper classes like that from
http://www.slovaktech.com/outlook_2007_templates.htm, it is set up for
Outlook 2007 use with VB6.

--
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


"paresh" wrote in message
...
Hi, I have been facing a issue with dealing with my add-in toolbar. I want
to
make my toolbar permanent so that use can hide and reposition it
permanently(even after restarting Outlook). At the same time, I want to
support my add-in toolbar for all opened Outlook explorer.

I want to make sure that at any point of time there must be one and only
one
toolbar on any Outlook window. I have tried below methods but none worked:

1. Tried deleting toolbar on shutdown. This doesn't delete the toolbar
and
each restarting outlook adds new toolbar.

Private Sub AddinInstance_OnBeginShutdown(custom() As Variant)
MyCommandBar.Delete
End Sub

Private Sub AddinInstance_Terminate()
MyCommandBar.Delete
End Sub

2. I tried deleting toolbar on Explorer close event but didn't work.
Whenever I open Outlook folder by right clicking it and selecting "Open in
new window", it keep adding new toolbar but does't delete.

Private Sub myExpl_Close()
MyCommandBar.Delete
If out_appt.Explorers.Count 1 Then
Set myExpl = Nothing
Set myColExpl = Nothing
End If
End Sub

3. Tried checking existence of toolbar but this will not add toolbar when
I
right click on outlook folder and open in new window.

Set MyCommandBar = myExpl.CommandBars.Item(TOOLBARNAME)
If Not MyCommandBar Is Nothing Then
MsgBox "exists"
Exit Sub
End If

Could anyone please help me here. I think if I can do any of below then I
would all set he
1. Delete existing toolbar while closing explorer event
2. Check the existing of toolbar explorer wise. Though I am setting
myExpl to currently active explorer, my code always returns true for
"myExpl.CommandBars.Item(TOOLBARNAME)" whenever I open outlook folder in
new
window.

Thanks.

=== MY CODE ===

Option Explicit
Public out_appt As Outlook.Application
Public WithEvents MyButton As Office.CommandBarButton
Public MyCommandBar As Office.CommandBar
Public WithEvents myColExpl As Outlook.Explorers
Public WithEvents myExpl As Outlook.Explorer
Private Sub AddinInstance_OnConnection(ByVal Application As Object, _
ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, _
ByVal AddInInst As Object, custom() As Variant)
Set out_appt = Application
End Sub
Private Sub AddinInstance_OnStartupComplete(custom() As Variant)
Set myColExpl = out_appt.Explorers
If out_appt.Explorers.Count 0 Then
Call CreateToolBar
End If
Exit Sub
End Sub
Private Sub myColExpl_NewExplorer(ByVal Explorer As Outlook.Explorer)
If myExpl Is Nothing Then
Set myExpl = Explorer
End If
If out_appt.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub
Private Sub myExpl_Close()
MyCommandBar.Delete
If out_appt.Explorers.Count 1 Then
Set myExpl = Nothing
Set myColExpl = Nothing
End If
End Sub
Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,
CancelDefault As Boolean)
On Error Resume Next
MsgBox "button clicked"
End Sub
Private Sub CreateToolBar()
If out_appt.Explorers.Count = 0 Then
Exit Sub
End If
Set myExpl = out_appt.ActiveExplorer
Const TOOLBARNAME = "My Toolbar"

' Set MyCommandBar = myExpl.CommandBars.Item(TOOLBARNAME)
' If Not MyCommandBar Is Nothing Then
' MsgBox "exists"
' Exit Sub
' End If
'
Set MyCommandBar = myExpl.CommandBars.Add(TOOLBARNAME, msoBarTop,
False,
False)
Set MyButton = MyCommandBar.Controls.Add(msoControlButton, , "890", ,
False)
With MyButton
.Caption = "&Foo Button"
.Enabled = True
.OnAction = "!PermToolbarTesting.Connect"
.Tag = "890"
.FaceId = 362
.Style = 3
.Visible = True
End With
MyCommandBar.Visible = True
End Sub


  #3  
Old December 16th 09, 03:34 PM posted to microsoft.public.outlook.program_vba
paresh
external usenet poster
 
Posts: 66
Default Problem in permanent type add-in toolbar

Thanks Ken but I think it is very complected way for me till I am acquainted
with it. I am also not sure if you distinguished all explorer using objects
then you can share the values you have loaded during startup.

I have came out with the very simple code that meets my all requirements.
Could you please tell me if there is anything wrong? It creates the toolbar
on new explorer event for any new Outlook window and seem to be working fine.

=== MY CODE ====

Option Explicit
Public out_App As Object
Public WithEvents MyButton As Office.CommandBarButton
Public MyCommandBar As Office.CommandBar
Public WithEvents myColExpl As Outlook.Explorers
Public WithEvents myExpl As Outlook.Explorer

Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal
ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As
Object, custom() As Variant)
Set out_App = Application
End Sub

Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode _
As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
Set MyButton = Nothing
Set MyCommandBar = Nothing
End Sub

Private Sub AddinInstance_OnStartupComplete(custom() As Variant)
Set myColExpl = out_App.Explorers
If out_App.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub

Private Sub myColExpl_NewExplorer(ByVal Explorer As Outlook.Explorer)
If myExpl Is Nothing Then
Set myExpl = Explorer
End If

If out_App.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub

Private Sub myExpl_Close()
If out_App.Explorers.Count 1 Then
Set myExpl = Nothing
Set myColExpl = Nothing
End If
End Sub

Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,
CancelDefault As Boolean)
MsgBox "button clicked"
End Sub

Private Sub CreateToolBar()
Dim testIt As Boolean
If out_App.Explorers.Count = 0 Then
Exit Sub
End If

Const TOOLBARNAME = "Permanent Toolbar Testing2"
On Error Resume Next
testIt = Not out_App.ActiveExplorer.CommandBars(TOOLBARNAME) Is Nothing
If testIt Then
Set MyCommandBar =
Outlook.Application.ActiveExplorer.CommandBars.Ite m(TOOLBARNAME)
Else
Set MyCommandBar =
Outlook.Application.ActiveExplorer.CommandBars.Add (TOOLBARNAME, msoBarTop,
False, False)
End If

Set MyButton = MyCommandBar.Controls.Add(msoControlButton, , "891", ,
True)
With MyButton
.BeginGroup = True
.Caption = "My Permanent Button"
.Enabled = True
.OnAction = "!PermToolbarTesting2.Connect"
.Tag = "891"
.FaceId = 362
.Style = 3
.Visible = True
End With
MyCommandBar.Visible = True
End Sub

Thanks,
Paresh
  #4  
Old December 16th 09, 04:01 PM posted to microsoft.public.outlook.program_vba
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Problem in permanent type add-in toolbar

If the code you have now meets your requirements and seems to work there's
no need for me to review it.

--
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


"paresh" wrote in message
news
Thanks Ken but I think it is very complected way for me till I am
acquainted
with it. I am also not sure if you distinguished all explorer using
objects
then you can share the values you have loaded during startup.

I have came out with the very simple code that meets my all requirements.
Could you please tell me if there is anything wrong? It creates the
toolbar
on new explorer event for any new Outlook window and seem to be working
fine.

=== MY CODE ====

Option Explicit
Public out_App As Object
Public WithEvents MyButton As Office.CommandBarButton
Public MyCommandBar As Office.CommandBar
Public WithEvents myColExpl As Outlook.Explorers
Public WithEvents myExpl As Outlook.Explorer

Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal
ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As
Object, custom() As Variant)
Set out_App = Application
End Sub

Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode _
As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
Set MyButton = Nothing
Set MyCommandBar = Nothing
End Sub

Private Sub AddinInstance_OnStartupComplete(custom() As Variant)
Set myColExpl = out_App.Explorers
If out_App.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub

Private Sub myColExpl_NewExplorer(ByVal Explorer As Outlook.Explorer)
If myExpl Is Nothing Then
Set myExpl = Explorer
End If

If out_App.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub

Private Sub myExpl_Close()
If out_App.Explorers.Count 1 Then
Set myExpl = Nothing
Set myColExpl = Nothing
End If
End Sub

Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,
CancelDefault As Boolean)
MsgBox "button clicked"
End Sub

Private Sub CreateToolBar()
Dim testIt As Boolean
If out_App.Explorers.Count = 0 Then
Exit Sub
End If

Const TOOLBARNAME = "Permanent Toolbar Testing2"
On Error Resume Next
testIt = Not out_App.ActiveExplorer.CommandBars(TOOLBARNAME) Is Nothing
If testIt Then
Set MyCommandBar =
Outlook.Application.ActiveExplorer.CommandBars.Ite m(TOOLBARNAME)
Else
Set MyCommandBar =
Outlook.Application.ActiveExplorer.CommandBars.Add (TOOLBARNAME, msoBarTop,
False, False)
End If

Set MyButton = MyCommandBar.Controls.Add(msoControlButton, , "891", ,
True)
With MyButton
.BeginGroup = True
.Caption = "My Permanent Button"
.Enabled = True
.OnAction = "!PermToolbarTesting2.Connect"
.Tag = "891"
.FaceId = 362
.Style = 3
.Visible = True
End With
MyCommandBar.Visible = True
End Sub

Thanks,
Paresh


  #5  
Old December 16th 09, 05:59 PM posted to microsoft.public.outlook.program_vba
paresh
external usenet poster
 
Posts: 66
Default Problem in permanent type add-in toolbar

Ken, actually I am just wondering why we have to write the very complex code
to handle the toolbar for all opened Outlook windows individually? I
understood your concept of generating TAG id uniquely after creating the
explorer object but I haven't noticed multiple events firing when I have two
Outlook window open and both have same toolbar "My Toolbar" with same Buttons
and same TAGs.

In short, could you give me a simple example where we have to use the
concept given by you and my code will not work? I am intermediate level in
add-in so I might not be aware of many things.

Thanks,
Paresh

"Ken Slovak - [MVP - Outlook]" wrote:

If the code you have now meets your requirements and seems to work there's
no need for me to review it.

--
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


"paresh" wrote in message
news
Thanks Ken but I think it is very complected way for me till I am
acquainted
with it. I am also not sure if you distinguished all explorer using
objects
then you can share the values you have loaded during startup.

I have came out with the very simple code that meets my all requirements.
Could you please tell me if there is anything wrong? It creates the
toolbar
on new explorer event for any new Outlook window and seem to be working
fine.

=== MY CODE ====

Option Explicit
Public out_App As Object
Public WithEvents MyButton As Office.CommandBarButton
Public MyCommandBar As Office.CommandBar
Public WithEvents myColExpl As Outlook.Explorers
Public WithEvents myExpl As Outlook.Explorer

Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal
ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As
Object, custom() As Variant)
Set out_App = Application
End Sub

Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode _
As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
Set MyButton = Nothing
Set MyCommandBar = Nothing
End Sub

Private Sub AddinInstance_OnStartupComplete(custom() As Variant)
Set myColExpl = out_App.Explorers
If out_App.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub

Private Sub myColExpl_NewExplorer(ByVal Explorer As Outlook.Explorer)
If myExpl Is Nothing Then
Set myExpl = Explorer
End If

If out_App.Explorers.Count 0 Then
Call CreateToolBar
End If
End Sub

Private Sub myExpl_Close()
If out_App.Explorers.Count 1 Then
Set myExpl = Nothing
Set myColExpl = Nothing
End If
End Sub

Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,
CancelDefault As Boolean)
MsgBox "button clicked"
End Sub

Private Sub CreateToolBar()
Dim testIt As Boolean
If out_App.Explorers.Count = 0 Then
Exit Sub
End If

Const TOOLBARNAME = "Permanent Toolbar Testing2"
On Error Resume Next
testIt = Not out_App.ActiveExplorer.CommandBars(TOOLBARNAME) Is Nothing
If testIt Then
Set MyCommandBar =
Outlook.Application.ActiveExplorer.CommandBars.Ite m(TOOLBARNAME)
Else
Set MyCommandBar =
Outlook.Application.ActiveExplorer.CommandBars.Add (TOOLBARNAME, msoBarTop,
False, False)
End If

Set MyButton = MyCommandBar.Controls.Add(msoControlButton, , "891", ,
True)
With MyButton
.BeginGroup = True
.Caption = "My Permanent Button"
.Enabled = True
.OnAction = "!PermToolbarTesting2.Connect"
.Tag = "891"
.FaceId = 362
.Style = 3
.Visible = True
End With
MyCommandBar.Visible = True
End Sub

Thanks,
Paresh


.

  #6  
Old December 16th 09, 06:42 PM posted to microsoft.public.outlook.program_vba
Ken Slovak - [MVP - Outlook]
external usenet poster
 
Posts: 5,848
Default Problem in permanent type add-in toolbar

Here's one example.

You have a toggle button that indicates a state for doing something. If you
have 2 Inspectors open and both use the same Tag value for a
CommandBarButton, both will get the click event that toggles the button. So
toggling in one toggles both. Then when some action is taken based on the
button state you can't maintain separate states for the button in each
Inspector.

Using wrapper classes solves a number of problems such as that with unique
Tag values, individually handling events in multiple open windows, handling
discrete ribbon clicks that are directed to only one Inspector where you
pass the click to a handler in your wrapper class, etc.

Every advanced Outlook developer I know uses wrapper classes and
collections, but your mileage may vary. I'd never do an Outlook addin myself
without wrapper classes.

--
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


"paresh" wrote in message
...
Ken, actually I am just wondering why we have to write the very complex
code
to handle the toolbar for all opened Outlook windows individually? I
understood your concept of generating TAG id uniquely after creating the
explorer object but I haven't noticed multiple events firing when I have
two
Outlook window open and both have same toolbar "My Toolbar" with same
Buttons
and same TAGs.

In short, could you give me a simple example where we have to use the
concept given by you and my code will not work? I am intermediate level in
add-in so I might not be aware of many things.

Thanks,
Paresh


  #7  
Old December 17th 09, 04:39 AM posted to microsoft.public.outlook.program_vba
paresh
external usenet poster
 
Posts: 66
Default Problem in permanent type add-in toolbar

Thanks that makes perfect sense to me but I think I don't need to write
wrapper class for explorer as my requirements are very simple and nothing is
shared between the toolbar clicks that might cause the issue.

What all I want is to put toolbar whenever new explorer open and perform the
operation when button click.

Thanks a lot for your help.
Paresh

"Ken Slovak - [MVP - Outlook]" wrote:

Here's one example.

You have a toggle button that indicates a state for doing something. If you
have 2 Inspectors open and both use the same Tag value for a
CommandBarButton, both will get the click event that toggles the button. So
toggling in one toggles both. Then when some action is taken based on the
button state you can't maintain separate states for the button in each
Inspector.

Using wrapper classes solves a number of problems such as that with unique
Tag values, individually handling events in multiple open windows, handling
discrete ribbon clicks that are directed to only one Inspector where you
pass the click to a handler in your wrapper class, etc.

Every advanced Outlook developer I know uses wrapper classes and
collections, but your mileage may vary. I'd never do an Outlook addin myself
without wrapper classes.

--
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


"paresh" wrote in message
...
Ken, actually I am just wondering why we have to write the very complex
code
to handle the toolbar for all opened Outlook windows individually? I
understood your concept of generating TAG id uniquely after creating the
explorer object but I haven't noticed multiple events firing when I have
two
Outlook window open and both have same toolbar "My Toolbar" with same
Buttons
and same TAGs.

In short, could you give me a simple example where we have to use the
concept given by you and my code will not work? I am intermediate level in
add-in so I might not be aware of many things.

Thanks,
Paresh


.

 




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Toolbar problem -Help lencastro Add-ins for Outlook 0 May 25th 07 11:27 AM
Toolbar problem -Help lencastro Add-ins for Outlook 0 May 25th 07 11:20 AM
Problem when adding new toolbar on NewInspector when editor type in Word - Outlook 2003 Harry Add-ins for Outlook 3 March 26th 07 02:25 PM
Problem when adding new toolbar on NewInspector when editor type is Word - Outlook 2003 Harry Outlook - General Queries 1 February 7th 07 02:06 PM
Toolbar problem Lesley Outlook Express 7 August 30th 06 10:19 AM


All times are GMT +1. The time now is 11:10 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2025 Outlook Banter.
The comments are property of their posters.