Scalabium Software

SMReport Autogenerated

Knowledge for your independence'.
Home Delphi and C++Builder tips


#128: How can I create an appointment in MS Outlook?

Today I want to continue a serie of tips for MS Outlook automatization from Delphi.

If you want to create a new appointment, you can use a code sample below:

uses ComObj;

procedure CreateNewAppointment;
const
  olAppointmentItem = $00000001;

  olImportanceLow = 0;
  olImportanceNormal = 1;
  olImportanceHigh = 2;

  {to find a default Contacts folder}
  function GetCalendarFolder(folder: OLEVariant): OLEVariant;
  var
    i: Integer;
  begin
    for i := 1 to folder.Count do
    begin
      if (folder.Item[i].DefaultItemType = olAppointmentItem) then
        Result := folder.Item[i]
      else
        Result := GetCalendarFolder(folder.Item[i].Folders);
      if not VarIsNull(Result) and not VarIsEmpty(Result) then
        break
    end;
  end;

var
  outlook, ns, folder, appointment: OLEVariant;
begin
  {initialize an Outlook}
  outlook := CreateOLEObject('Outlook.Application');
  {get MAPI namespace}
  ns := outlook.GetNamespace('MAPI');
  {get a default Contacts folder}
  folder := GetCalendarFolder(ns.Folders);
  {if Contacts folder is found}
  if not VarIsNull(folder) and not VarIsEmpty(folder) then
  begin
    {create a new item}
    appointment := folder.Items.Add(olAppointmentItem);
    {define a subject and body of appointment}
    appointment.Subject := 'new appointment';
    appointment.Body := 'call me tomorrow';

      {location of appointment}
      appointment.Location := 'room 3, level 2';

    {duration: 10 days starting from today}
    appointment.Start := Now() + 0.05;
    appointment.End := Now()+10; {10 days for execution}
    appointment.AllDayEvent := 1; {all day event}

    {set reminder in 20 minutes}
    appointment.ReminderMinutesBeforeStart := 20;
    appointment.ReminderSet := 1;

    {set a high priority}
    appointment.Importance := olImportanceHigh;

    {add a few recipients}
    appointment.Recipients.Add('person1@domain.com');
    appointment.Recipients.Add('person2@domain.com');

    {change an organizer name}
    appointment.Organizer := 'organizer@domain.com';

    {to save an appointment}
    appointment.Save;

    {to display an appointment}
    appointment.Display(True);

    {to print a form}
    appointment.PrintOut;
  end;

  {to free all used resources}
  folder := UnAssigned;
  ns := UnAssigned;
  outlook := UnAssigned
end;


Published: October 20, 2001

See also
 
Clarion Viewer
ABA Spreadsheet Convert
Paradox ActiveX
ABA Document Convert
ABA Picture Convert
Clarion to Text converter
ExcelFile Viewer
SMDBGrid
Viewer for MS Outlook Messages
Mail parser (ActiveX)
 
 
Contact to webmaster

 

Borland Software Code Gear Scalabium Delphi tips

Copyright© 1998-2015, Scalabium Software. All rights reserved.
webmaster@scalabium.com

SMExport advertising