Delphi - Az Outlook határidőnaplójának kezelése programból

Office 15. rész

forráskód letöltése
Az Outlook programozásáról szóló cikkekben eddig csak a levelezéssel kapcsolatos dolgokkal foglalkoztunk, pedig az Outlook nem csupán egy egyszerű levelezőprogram, hanem többek között tartalmaz egy nagyon jól használható határidőnaplót is. Ebben a cikkben azt nézzük meg, hogy ebbe a határidőnaplóba hogyan vehetünk fel új, illetve hogyan törölhetünk felesleges bejegyzéseket. A feladat amit a példában megvalósítunk az lesz, hogy egy ListView komponensben megjelenítjük a naptárbejegyzéseket. Ha a listából kiválasztunk egy bejegyzést, akkor annak részletes leírása (ha van ilyen) megjelenik egy TRichEdit komponensben. A naptárba vehetünk fel új bejegyzést, és törölhetjük is a kiválasztott elemet.

A naptárbejegyzések lekérdezéséhez létrehoztunk egy GetAppointments nevű eljárást. Megszokhattuk már, hogy ha egy Outlook mappában lévő elemekre van szükségünk, akkor mindenképpen szükségünk lesz egy NameSpace objektumra. A NameSpace objektum GetDefaultFolder függvényével lekérdezzük a Naptár mappa objektumát amit az FFolder változóban tárolunk.
  FNamespace:=FOutlook.GetNamespace('MAPI');
  FFolder:=FNamespace.GetDefaultFolder(olFolderCalendar);
Töröljük a ListView elemeit.
  ListView1.Items.Clear;
Egy ciklussal végigmegyünk a mappa elemein. Egy bejegyzést az Item függvénnyel kaphatunk meg, amelynek paramétere a bejegyzés sorszáma, és egy AppointmentItem típusú objektumot ad vissza. Ennek az osztálynak a Subject property-je adja vissza a bejegyezés tárgyát. Ez az a szöveg, ami a naptárban megjelenik. A Start és End property-k adják meg a bejegyzés érvényességi tartományát dátum és idő formátumban.
  for i:=1 to FFolder.Items.Count do begin
    FAptItem:=FFolder.Items(i);
    li:=ListView1.Items.Add;    li.Caption:=FAptItem.Subject;
    li.SubItems.Add(FAptItem.Start);    li.SubItems.Add(FAptItem.End);
  end;
end;
Amikor a felhasználó kiválaszt egy bejegyzést a listából, akkor megjelenítjük annak részletes leírását egy RichEdit komponensben. Ezt a funkciót legcélszerűbb a ListView OnSelectItem eseményénél megvalósítanunk.
Először ellenőrizzük, hogy van-e kiválasztott elem:
  if Assigned(ListView1.Selected) then begin
NameSpace objektum GetDefaultFolder függvényével megkapjuk a Naptár mappa objektumát.
    FNamespace:=FOutlook.GetNamespace('MAPI');
    FFolder:=FNamespace.GetDefaultFolder(olFolderCalendar);
Az Items függvénynek van egy paramétere, amely a naptár bejegyzés sorszáma. A függvény visszatérési értéke egy AppointmentItem típusú objektum, amelynek Body property-je tartalmazza a bejegyzés részletes leírását. Ez nem minden esetben van kitöltve, ezért lehetséges, hogy a RichEdit üresen marad az elem kiválasztása után is!
    FAptItem:=FFolder.Items(ListView1.Selected.Index+1);
    RichEdit1.Text:=FAptItem.Body;
Lekérdezni már tudjuk a bejegyzéseket, most azt nézzük meg, hogy hogyan tudunk új bejegyzést regisztrálni. Az Edit1 komponensben megadott névvel vesszük fel az új bejegyzést.
A CreateItem függvénnyel készítünk egy új AppointMent objektumot, amit az FAptItem változóban tárolunk. A függvény paraméterének olAppointmentItem-nek kell lennie!
  FAptItem:=FOutlook.CreateItem(olAppointmentItem);
Az új objektum Subject property-jének értékül adjuk az Edit1.Text property-jét. Ez jelenik meg a naptárban. A Body property-be beírjuk a felvétel időpontját és dátumát. Miután megadtuk a szükséges adatokat a Save metódussal elmentjük azokat.
  FAptItem.Subject:=Edit1.text;
  FAptItem.Body:='Felvétel időpontja: '+TimeToStr(Time);
  FAptItem.Save;
Ha már tudunk bejegyzést hozzáadni a naptárhoz, akkor azt is nézzük meg, hogy hogyan tudjuk törölni a felesleges bejegyzéseket. A már ismert módon lekérdezzük a törölni kívánt elem objektumát, majd a Delete metódussal töröljük azt.
    FNamespace:=FOutlook.GetNamespace('MAPI');
    FFolder:=FNamespace.GetDefaultFolder(olFolderCalendar);
    FAptItem:=FFolder.Items(ListView1.Selected.Index+1);
    FAptItem.Delete;

Office cikksorozat