Comment gérer l'événement ItemSend ?
Le composant TOutlookApplication implémente l'événement
ItemSend, on peut donc être averti, par exemple, lors d'un envoi d'un mail et autoriser ou non son envoi si on le souhaite.
L'argument
ASender est l'application Outlook.
L'argument
Item peut être une des interfaces suivante :
- AppointmentItem,
- MeetingItem,
- MailItem,
- TaskItem.
Elles implémentent la méthode
Send générant l'événement
ItemSend.
L'argument
Cancel annule l'envoi si on lui affecte la valeur
True.
Il est possible de coder de cette manière :
1 2 3 4 5 6 7 8 9 10 11 12 13
| procedure TForm1.OutlookItemSend(ASender: TObject; const Item: IDispatch;
var Cancel: WordBool);
var S : String;
UnMessage : MailItem;
begin
UnMessage:=Item as MailItem;
S:='Ajout d''un mail '+UnMessage.Subject;
ShowMessage(S);
//Cancel:=True; //Annule l'envoi de l'item courant.
end; |
Mais si l'argument
Item ne supporte pas l'interface
MailItem une exception est levée. Dans le cas où l'on souhaite manipuler plusieurs type d'interface la gestion des exceptions alourdira le code.
Dans ce cas on utilise la fonction
Supports qui nous indique si l'interface
Item supporte ou non l'interface que l'on souhaite interrogée.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
procedure TForm1.OutlookItemSend(ASender: TObject; const Item: IDispatch;
var Cancel: WordBool);
var S : String;
UnMessage : MailItem;
UneReunion : MeetingItem;
begin
// Est-ce l'envoi d'un mail ?
If Supports(Item,MailItem,UnMessage) then
with UnMessage do
S:='Ajout d''un mail '+Subject;
// Est-ce l'envoi d'une demande de participation à une réunion ?
If Supports(Item,MeetingItem,UneReunion) then
with UneReunion do
S:='Ajout d''un contact '+SubJect+' '+SenderName;
ShowMessage(S);
//Cancel:=True; //Annule l'envoi de l'item courant.
end; |
Partager