Outlook Banter

Outlook Banter (http://www.outlookbanter.com/)
-   Outlook - Using Forms (http://www.outlookbanter.com/outlook-using-forms/)
-   -   Before Send (http://www.outlookbanter.com/outlook-using-forms/80390-before-send.html)

BigDubb October 16th 08 08:45 PM

Before Send
 
How would one prevent sending of an appontment object if all of the required
fields haven't been completed? I cant seem to find a before send event to
trap on.

Thanks.

Ken Slovak - [MVP - Outlook] October 16th 08 09:11 PM

Before Send
 
That's because there isn't such an event. However, the item.Send() event
does have a Cancel argument. Set that to True and that will cancel the send.

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


"BigDubb" wrote in message
...
How would one prevent sending of an appontment object if all of the
required
fields haven't been completed? I cant seem to find a before send event to
trap on.

Thanks.



BigDubb October 16th 08 09:23 PM

Before Send
 
Thanks.

Actually I was able to get the Application object from the AppointmentItem
and add a handler on the ItemSend event, which is exactly what I was looking
for.

One caveat with this though, it seems to reload the send event when a
messagebox is shown, to notify the user as to why the request can't be sent.



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

That's because there isn't such an event. However, the item.Send() event
does have a Cancel argument. Set that to True and that will cancel the send.

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


"BigDubb" wrote in message
...
How would one prevent sending of an appontment object if all of the
required
fields haven't been completed? I cant seem to find a before send event to
trap on.

Thanks.




BigDubb October 16th 08 10:06 PM

Before Send
 
Another issue with this event....

If a user is attempting to cancel the request and a required value is not
set, then the send event is never executed.



"BigDubb" wrote:

Thanks.

Actually I was able to get the Application object from the AppointmentItem
and add a handler on the ItemSend event, which is exactly what I was looking
for.

One caveat with this though, it seems to reload the send event when a
messagebox is shown, to notify the user as to why the request can't be sent.



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

That's because there isn't such an event. However, the item.Send() event
does have a Cancel argument. Set that to True and that will cancel the send.

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


"BigDubb" wrote in message
...
How would one prevent sending of an appontment object if all of the
required
fields haven't been completed? I cant seem to find a before send event to
trap on.

Thanks.




BigDubb October 16th 08 11:42 PM

Before Send
 
Ok...

The more I dig into this the more odd things react.

It appears as if the Send button on a Meeting/Appointment request fires off
a Send Event for every recipient on the appointment.

which after thinking about it, makes sense. However, how do I get my
UserDefined variables passed into the new appointment object for each
recipient?

This is a .Net C# solution.

What I"m doing so far.

On the FormRegionShowing method I added hooked a method to the current
application object.

_appt.Application.ItemSend += new
Outlook.ApplicationEvents_11_ItemSendEventHandler( Application_ItemSend)

Then in the method the handler references I test on a local variable

if (!_Qualified)
e.Cancel;


where _Qualified is a boolean value, that is set based on other criteria on
the form.

This feels like the correct implementation, but isn't reacting the right way.



"BigDubb" wrote:

Another issue with this event....

If a user is attempting to cancel the request and a required value is not
set, then the send event is never executed.



"BigDubb" wrote:

Thanks.

Actually I was able to get the Application object from the AppointmentItem
and add a handler on the ItemSend event, which is exactly what I was looking
for.

One caveat with this though, it seems to reload the send event when a
messagebox is shown, to notify the user as to why the request can't be sent.



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

That's because there isn't such an event. However, the item.Send() event
does have a Cancel argument. Set that to True and that will cancel the send.

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


"BigDubb" wrote in message
...
How would one prevent sending of an appontment object if all of the
required
fields haven't been completed? I cant seem to find a before send event to
trap on.

Thanks.



Ken Slovak - [MVP - Outlook] October 17th 08 03:14 PM

Before Send
 
Why not try the item.Send event as I suggested originally?

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


"BigDubb" wrote in message
...
Ok...

The more I dig into this the more odd things react.

It appears as if the Send button on a Meeting/Appointment request fires
off
a Send Event for every recipient on the appointment.

which after thinking about it, makes sense. However, how do I get my
UserDefined variables passed into the new appointment object for each
recipient?

This is a .Net C# solution.

What I"m doing so far.

On the FormRegionShowing method I added hooked a method to the current
application object.

_appt.Application.ItemSend += new
Outlook.ApplicationEvents_11_ItemSendEventHandler( Application_ItemSend)

Then in the method the handler references I test on a local variable

if (!_Qualified)
e.Cancel;


where _Qualified is a boolean value, that is set based on other criteria
on
the form.

This feels like the correct implementation, but isn't reacting the right
way.



"BigDubb" wrote:

Another issue with this event....

If a user is attempting to cancel the request and a required value is not
set, then the send event is never executed.



"BigDubb" wrote:

Thanks.

Actually I was able to get the Application object from the
AppointmentItem
and add a handler on the ItemSend event, which is exactly what I was
looking
for.

One caveat with this though, it seems to reload the send event when a
messagebox is shown, to notify the user as to why the request can't be
sent.



BigDubb October 17th 08 03:46 PM

Before Send
 
There is no Item object in the parameters, nor understood by the class
associated to the new region.

Can you clarify further?

Again, this is not a VBA project, it is a VS2008 C# project.

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

Why not try the item.Send event as I suggested originally?

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


"BigDubb" wrote in message
...
Ok...

The more I dig into this the more odd things react.

It appears as if the Send button on a Meeting/Appointment request fires
off
a Send Event for every recipient on the appointment.

which after thinking about it, makes sense. However, how do I get my
UserDefined variables passed into the new appointment object for each
recipient?

This is a .Net C# solution.

What I"m doing so far.

On the FormRegionShowing method I added hooked a method to the current
application object.

_appt.Application.ItemSend += new
Outlook.ApplicationEvents_11_ItemSendEventHandler( Application_ItemSend)

Then in the method the handler references I test on a local variable

if (!_Qualified)
e.Cancel;


where _Qualified is a boolean value, that is set based on other criteria
on
the form.

This feels like the correct implementation, but isn't reacting the right
way.



"BigDubb" wrote:

Another issue with this event....

If a user is attempting to cancel the request and a required value is not
set, then the send event is never executed.



"BigDubb" wrote:

Thanks.

Actually I was able to get the Application object from the
AppointmentItem
and add a handler on the ItemSend event, which is exactly what I was
looking
for.

One caveat with this though, it seems to reload the send event when a
messagebox is shown, to notify the user as to why the request can't be
sent.




Ken Slovak - [MVP - Outlook] October 17th 08 04:00 PM

Before Send
 
It doesn't matter what type of project it is, it's still using the Outlook
object model.

If you have an appointment item you have an item. AppointmentItem has a Send
event that you can handle. Look at the object browser.

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


"BigDubb" wrote in message
...
There is no Item object in the parameters, nor understood by the class
associated to the new region.

Can you clarify further?

Again, this is not a VBA project, it is a VS2008 C# project.



BigDubb October 17th 08 04:36 PM

Before Send
 
I am not seeing an Appointment.Send Event, rather an Send Method.

When trying to make the event handler for the send method I get the
following error
"Cannot assign to 'Send' because it is a 'method group' "

Here is the syntax
AppointmentItem _appt = this.OutlookItem as Outlook.AppointmentItem;
if(_appt == null)
return;

_appt.Send += new
Outlook.ApplicationEvents_11_ItemSendEventHandler( Application_ItemSend);


What am I missing?


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

It doesn't matter what type of project it is, it's still using the Outlook
object model.

If you have an appointment item you have an item. AppointmentItem has a Send
event that you can handle. Look at the object browser.

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


"BigDubb" wrote in message
...
There is no Item object in the parameters, nor understood by the class
associated to the new region.

Can you clarify further?

Again, this is not a VBA project, it is a VS2008 C# project.




Ken Slovak - [MVP - Outlook] October 17th 08 05:53 PM

Before Send
 
What you're missing is what you're going to run into with methods/events
that overload the same keyword in all managed code. In this case
AppointmentItem doesn't directly expose the Send event since it uses the
same keyword as the Send method.

There are a couple of ways to do what you need to do:

1. Declare at class level an ItemEvents_Event object, say _apptEvents:
private Outlook.ItemEvents_Event _apptEvents;

Then instantiate the event handler so:
_apptEvents = (Outlook.ItemEvents_Event)_appt;
_apptEvents.Send += new Outlook.ItemEvents_SendEventHandler(myHandler);

2. An alternative is to use AppointmentItemClass:
private Outlook.AppointmentItemClass _itemClass; // class level

Then instantiate as follows:
_itemClass = (Outlook.AppointmentItemClass) _appt;
_itemClass.ItemEvents_10_Event_Send += etc.

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


"BigDubb" wrote in message
...
I am not seeing an Appointment.Send Event, rather an Send Method.

When trying to make the event handler for the send method I get the
following error
"Cannot assign to 'Send' because it is a 'method group' "

Here is the syntax
AppointmentItem _appt = this.OutlookItem as Outlook.AppointmentItem;
if(_appt == null)
return;

_appt.Send += new
Outlook.ApplicationEvents_11_ItemSendEventHandler( Application_ItemSend);


What am I missing?




All times are GMT +1. The time now is 07:12 AM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com