HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Outlook programozása Delphi-ből


Office 12. rész

Példaprogram letöltése

40180 bájt

Az Office cikksorozatban eddig a Word és az Excel alkalmazások programozásával foglalkoztunk. Most rátérünk a Microsoft Outlook programozásának ismertetésére, amiből megtudhatjuk majd, hogy hogyan kérdezhetjük le és hogyan küldhetünk e-mail-eket, hogyan érhetjük el és módosíthatjuk a címlistát, valamint hogyan kezelhetjük a határidőnaplót.
Azt nem árt tisztázni már az elején, hogy ehhez is szükségünk lesz egy Type Library-ra. Aki figyelmesen végigolvasta az Office programozásáról szóló cikksorozatot annak a Type Libary generálása már nem okozhat gondot. Ha ez megtörtént, akkor neki is kezdhetünk az Outlook programozásának.

Mivel a kapcsolat létesítése itt is ugyanúgy történik, mint a Word és az Excel esetében, ezért kezdhetjük mindjárt egy "komolyabb" program készítésével. A feladat az lesz, hogy lekérdezzük a "Beérkezett üzenetek" mappában lévő leveleink listáját, és a kiválasztott üzenet szövegét megjelenítjük egy TRichEdit komponensben.

A csatlakozás az Outlook-hoz a már feltehetőleg jól ismert módon történik:
var
  Foutlook: OleVariant;
…
procedure TForm1.Connect;
begin
  FOutlook:=CreateOleObject('Outlook.Application');
end;
Innentől aztán bonyolódik a helyzet! Elsődleges feladatunk az, hogy a "Beérkezett üzenetek" mappában lévő leveleinket beolvassuk, és megjelenítsük azokat egy ListView komponensben. Ezt mindjárt a program indításakor elvégezhetjük, ezért a Form1 OnCreate eseményét használjuk fel erre a célra:

Meghívjuk a Connect metódust, ami elvégzi a csatlakozást (lásd fent).

Szükségünk lesz egy NameSpace objektumra, amit a GetNameSpace függvénnyel kérdezhetünk le. Ennek a függvénynek egy sztring paramétere van, ami minden esetben "MAPI" kell, hogy legyen!
  FNamespace:=FOutlook.GetNameSpace('MAPI');
A NameSpace objektum GetDefaultFolder függvénye segítségével megkaphatjuk a beérkezett leveleinket tartalmazó mappa objektumát. A függvény paramétere azt a mappát azonosítja, amit el szeretnénk érni. A mappa azonosítóját egy OlDefaultFolders típusú konstanssal lehet megadni, melynek értékei a következők lehetnek: olFolderCalendar (9), olFolderContacts (10), olFolderDeletedItems (3), olFolderDrafts (16), olFolderInbox (6), olFolderJournal (11), olFolderNotes (12), olFolderOutbox (4), olFolderSentMail (5), vagy olFolderTasks (13).
  FFolder:=FNamespace.GetDefaultFolder(olFolderInbox);
Az FFolder objektum Items property-je egy TStringList osztályhoz hasonlóan tartalmazza a mappa tartalmát. Az Items.Count property megadja, hogy a lista hány elemet tartalmaz. Az Items(index) függvénnyel megkaphatjuk az index sorszámú elemet. Nincs más dolgunk, mint végighaladni a listán, és az FMailItem változóba lekérdezni az i. sorszámú levelünk objektumát. Ezután ebből kiolvasható minden szükséges adat, amit meg is jelenítünk egy ListView komponensben:
  for i:=1 to FFolder.Items.Count do begin
    FMailItem:=FFolder.Items(i);
    li:=ListView1.Items.Add;
    li.Caption:=FMailItem.SenderName;
    li.SubItems.Add(FMailItem.Subject);
    li.SubItems.Add(FMailItem.ReceivedTime);
  end;
end;
A következő feladat az, hogy a ListView-ben kiválasztott üzenet szövegét megjelenítsük egy RichEdit komponensben. Ezt a funkciót a ListView OnSelectItem eseményénél valósítjuk meg.
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
var
  FNamespace, FFolder, FMailItem: OleVariant;
begin
Először is ellenőrizzük, hogy van-e kiválasztott elem a ListView-ben. Ezt egyszerűen az Assigned függvény segítségével tehetjük meg.
  if Assigned(ListView1.Selected) then begin
Itt egy ismerős rész következik, a NameSpace és a FFolder objektum lekérdezése:
    FNamespace:=FOutlook.GetNamespace('MAPI');
    FFolder:=FNamespace.GetDefaultFolder(olFolderInbox);
A következő rész szintén az előző eljárásból lehet ismerős, de itt egy kicsit más formában alkalmazzuk. A kiválasztott ListItem Index property-jét fogjuk felhasználni az üzenet azonosítására, vagyis ezt adjuk meg az Items függvénynél index-nek úgy, hogy még 1-et hozzáadunk. Azért kell 1-et hozzáadni, mert míg a ListView-nél 0-tól, addig a MailItem objektumban 1-től vannak sorszámozva az elemek. Az így megkapott MailItem objektum body property-jéből kiolvasható az üzenet szövege.
Ha nincs kiválasztott eleme a ListView-nek, akkor töröljük a RichEdit tartalmát.
    FMailItem:=FFolder.Items(ListView1.Selected.Index+1);
    RichEdit1.Text:=FMailItem.Body;
  end else RichEdit1.Clear;
end;


Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 389. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |