Witam,
mam 'okazję' przyjrzeć się bliżej outlook'owi (v.2013) i rozszerzeniom VSTO Add-in. Pierwsze pytanie mam takie ogólne - czy ktoś z Was miał okazję robić jakiś Add-in do Outlooka? Ja osobiście chciałem dodać kilka dodatkowych pól do formularza spotkania (appointment) i mam z tym niestety kłopot, bo:
-
Nie mogę użyć tutaj funkcji tworzenia/edytowania szablonu terminarza (scheduling assistant), bo akurat w tym przypadku ten formularz jest read-only. W niektórych przypadkach widziałem, że właśnie przy pomocy tego narzędzia można trochę pozmieniać sobie formularz (m.in. kontaktowy).
-
Więc zabrałem się za Outlook Form Region ( https://msdn.microsoft.com/en-us/library/bb386301.aspx ), z tym że tutaj nie mogę się z kolei dokopać (i czy to w ogóle jest możliwe) do informacji, jak 'odbierać zdarzenia' z kontrolek już istniejących i 'połączyć' ich działanie z kontrolkami dodanymi przeze mnie, np. przy dodawaniu nowego spotkania chciałbym, aby nowo dodane pole również było uwzględniane.. (pomocny screen: http://oi60.tinypic.com/2z7r238.jpg )
Jakby szło rozwiązać ten drugi podpunkt to byłoby by elegancko.. tymczasem chciałbym pokazać co zrobiłem i z czym mam ciągle problem..
Mam sytuację, gdzie chcę otworzyć okno konkretnego spotkania ( http://oi57.tinypic.com/15gayr5.jpg ). Można to zrobić na dwa sposoby: z poziomu kalendarza ( https://i.ytimg.com/vi/8MsBWk0p7_M/maxresdefault.jpg ) i z poziomu asystenta planowania ( https://plagwitz.files.wordpress.com/2013/08/image3.png ). Problem polega na tym, że otwierając okno spotkania z poziomu kalendarza wszystko jest ok (mogę 'dorwać się' do obiektu bo m.in. mogę zwrócić z aplikacji aktywnego explorera). Przy próbie otwarcia okna spotkania z poziomu asystenta planowania, nie mogę pobrać explorera i tym samym obiektu appoitmentItem.
Pytanie są wiec takie - jak sobie z tym poradzić ? Czy można jakoś inaczej pozyskać ten obiekt spotkania ? Co robię nie tak ?
// chcąc nie chcąc wykorzystuje te metody, bo innych do dyspozycji nie mam...
private void PersonCounter_FormRegionShowing(object sender, System.EventArgs e)
{
Outlook.Application app = Globals.ThisAddIn.Application.Application;
Explorer explorer = app.ActiveExplorer();
if (explorer != null && explorer.Selection != null && explorer.Selection.Count > 0)
{
Object selObject = explorer.Selection[1];
if (selObject is Outlook.AppointmentItem)
{
Outlook.AppointmentItem appointItem = (selObject as Outlook.AppointmentItem);
//dalsza cześć logiki..
}
}
}
private void PersonCounter_FormRegionClosed(object sender, System.EventArgs e)
{
}
Pozdrawiam
Adam