Outlook Automation - Contactlist (Views: 31)
Problem/Question/Abstract: How use Outlook's Contact list in Applications Answer: This is sample how look and change information in Outlook's Contactlist from external application. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const // constants from MSOUTL8.olb olByValue = 1; olByReference = 4; olEmbeddedItem = 5; olOLE = 6; olMailItem = 0; olAppointmentItem = 1; olContactItem = 2; olTaskItem = 3; olJournalItem = 4; olNoteItem = 5; olPostItem = 6; olFolderDeletedItems = 3; olFolderOutbox = 4; olFolderSentMail = 5; olFolderInbox = 6; olFolderCalendar = 9; olFolderContacts = 10; olFolderJournal = 11; olFolderNotes = 12; olFolderTasks = 13; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; mName: TMemo; mFamily: TMemo; mFullName: TMemo; mCompany: TMemo; mSaveAs: TMemo; mBody: TMemo; btnSave: TButton; sbContacts: TScrollBar; btnConnect: TButton; procedure btnConnectClick(Sender: TObject); procedure mNameChange(Sender: TObject); procedure sbContactsChange(Sender: TObject); procedure btnSaveClick(Sender: TObject); private { Private declarations } IsDirty: boolean; public { Public declarations } OlApp, Namespace, ContactFolder: OleVariant; procedure LoadContact(I: Integer; folder: OleVariant); procedure SaveContact(I: Integer; folder: OleVariant); end; var Form1: TForm1; implementation uses ComObj; {$R *.DFM} procedure TForm1.btnConnectClick(Sender: TObject); begin OlApp := CreateOleObject('Outlook.Application'); Namespace := OlApp.GetNameSpace('MAPI'); ContactFolder := Namespace.GetDefaultFolder(olFolderContacts); sbContacts.Max := ContactFolder.Items.Count; sbContacts.Position := 1; LoadContact(1, ContactFolder); end; procedure TForm1.LoadContact(I: Integer; folder: OleVariant); var Item: OleVariant; begin Caption := 'Rec ' + IntToStr(i) + ' from ' + IntToStr(sbContacts.Max); Item := folder.Items(I); mName.Text := Item.FirstName; mFamily.Text := Item.LastName; mFullName.Text := Item.FullName; mCompany.Text := Item.CompanyName; mSaveAs.Text := Item.FileAs; mBody.Text := Item.Body; end; procedure TForm1.SaveContact(I: Integer; folder: OleVariant); var Item: OleVariant; begin Item := folder.Items(I); Item.FirstName := mName.Text; Item.LastName := mFamily.Text; Item.FullName := mFullName.Text; Item.CompanyName := mCompany.Text; Item.FileAs := mSaveAs.Text; Item.Body := mBody.Text; Item.Save; isDirty := False; end; procedure TForm1.mNameChange(Sender: TObject); begin IsDirty := True; end; procedure TForm1.sbContactsChange(Sender: TObject); begin LoadContact(sbContacts.Position, ContactFolder); end; procedure TForm1.btnSaveClick(Sender: TObject); begin SaveContact(sbContacts.Position, ContactFolder); end; end. |