OLE Outlook

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.

OLE Outlook

Beitragvon charlytango » 26. Feb 2017, 11:18 OLE Outlook

Hi.

Meine Absicht ist aus einer Kursverwaltung Daten (=Kurstermine =Appointments) in Outlook einzutragen.
Ich teste mit Outlook 2003, Laz 1.6.

Einges klappt ganz gut, an anderen Stellen kracht es aus nicht nachvollziehbaren Gründen, zumal die MS-Dokumentation und die MS-Beispiele Methoden vorgeben bei denen es dann zu Problemen kommt.

Ich teste mit einer kleinen Beispiel-App und allem Outlook-relevanten Code in einer eigenen Unit, die ich dem Forum zur Verfügung stellen würde.
(oder auch einen WIKI-Artikel damit bestücken)

Baustellen hab ich dzt. im Code 3 (alle mit // <<< markiert). Code liegt bei
die aktuellste ist das Auslesen und Anlegen von Categories.
Hier wird zur Laufzeit folgendes bemängelt:
<<< Method Categories not supported by automation object
Laut MS sollte das aber klappen.

Code: Alles auswählen
 
{ Prüft ob eine Kategorie existiert und falls nicht kann sie auch angelegt werden}
function OL_CategoryExists(sCategoryName: string; bCreateMissingCategory: boolean;
  iCategoryColor: integer; iCategoryShortcutKey: integer): boolean;
var
  Outlook,  olCategories,  olCategory,  olNameSpace: olevariant;
  i, NumItems: integer;
begin
  Outlook := CreateOleObject('Outlook.Application');
  olNameSpace := Outlook.GetNamespace('MAPI');
  //  olCategories := olNameSpace.Categories;
  //  numItems := olCategories.Count;
  numItems := olNameSpace.Categories.Count// <<< Method Categories not supported by automation object
  {
  laut
  https://msdn.microsoft.com/en-us/librar ... 63110.aspx
  sollte das eigentlich klappen
  }

 
  Result := False;
 
  if numItems > 0 then
  begin
    for i := 1 to numItems do
    begin
      //olCategory := olCategories.Item[i];
      olCategory := olNameSpace.Categories.Item[i];
 
      // olCategory.Name is the name of the category
      // olCategory.CategoryID is an internal, unique ID for the category
      if olCategory.Name = sCategoryName then
      begin
        Result := True;
        break;
      end;
      olCategory := Unassigned;
    end;
  end;
 
  if (not Result) then
  begin
    if bCreateMissingCategory then
    begin
      //------------------------------------------------
      // Kategorie erstellen: olCategories.Add
      // Name...string
      // Color..OlCategoryColor  (optional)
      // ShortcutKey.. OlCategoryShortcutKey (optional))
      //------------------------------------------------
      olCategories.Add(olevariant(sCategoryName), iCategoryColor);
      Result := True;
    end;
  end;
 
  olCategory := Unassigned;
  olCategories := Unassigned;
  olNameSpace := Unassigned;
  Outlook := Unassigned;
end;


Ich weiß dass das Durcharbeiten von fremdem Code meist eine Herausforderung ist, zumal etliches an Kommentaren und Schnipseln noch drin ist.
Aber vielleicht gibt es jmd der mir dabei weiterhelfen kann ..

THX
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
charlytango
 
Beiträge: 58
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: FPC 3.0; Laz 1.6 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

Beitragvon wp_xyz » 26. Feb 2017, 11:37 Re: OLE Outlook

Wenn ich dieses Dokument von MSDN richtig lese, hatte der NameSpace von Outlook 2003 noch keine Categories : https://msdn.microsoft.com/en-us/library/aa221870.aspx

Probier's mal direkt mit NameSpace.Items.
wp_xyz
 
Beiträge: 1788
Registriert: 8. Apr 2011, 08:01

Beitragvon charlytango » 27. Feb 2017, 16:18 Re: OLE Outlook

Danke, das war der richtige Hinweis -- manchmal bin ich echt blind.
Ich erspare mir das mit den NameSpace.Items und verwende Outlook ab 2007.

Thx nochmal
charlytango
 
Beiträge: 58
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: FPC 3.0; Laz 1.6 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

• Themenende •

Zurück zu Programmierung



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried