Как работать с адресной книгой Lotus Notes?

unit Unit2;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Domino_TLB, Menus, ComCtrls;
const
 PASSWD = 'ur70';
type
 TForm2 = class(TForm)
  TV_INFO: TTreeView;
  MainMenu1: TMainMenu;
  File1: TMenuItem;
  Create1: TMenuItem;
  Init1: TMenuItem;
  AddressBook1: TMenuItem;
  Scan1: TMenuItem;
  procedure Create1Click(Sender: TObject);
  procedure Init1Click(Sender: TObject);
  procedure Scan1Click(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;
var
 Form2: TForm2;
 Session: TNotesSession;
implementation
{$R *.dfm}
procedure TForm2.Create1Click(Sender: TObject);
begin
 Session := TNotesSession.Create(nil);
end;
procedure TForm2.Init1Click(Sender: TObject);
begin
 Session.Initialize(PASSWD);
end;
procedure TForm2.Scan1Click(Sender: TObject);
var
 NotesDb: NotesDatabase;
 addrBook: NotesDatabase;
 People, People2: NotesView;
 Person, Person2: NotesDocument;
 View: NotesView;
 Item: NotesItem;
 AddrBooks: OleVariant;
 Views: OleVariant;
 Items: OleVariant;
 x, y, z: integer;
 view_name: string;
 tn, tc: TTreeNode;
begin
 NotesDb := Session.GetDatabase('', 'names.nsf', False);
 AddrBooks := Session.AddressBooks;
 for x := 0 to VarArrayHighBound(AddrBooks, 1) -
  VarArrayLowBound(AddrBooks, 1) do
 begin
  addrBook := NotesDatabase(IUnknown(AddrBooks[x]));
  if (addrBook.IsPrivateAddressBook) then
  begin
  addrBook.Open;
  end
  else
  addrBook := nil;
  if (addrBook <> nil) then
  begin
  Views := addrBook.Views;
  for y := 0 to VarArrayHighBound(Views, 1) -
  VarArrayLowBound(Views, 1) do
  begin
  View := NotesView(IUnknown(Views[y]));
  view_name := View.Name;
  tn := tv_info.Items.AddNode(nil, nil, view_name, nil, naAdd);
  if copy(view_name, 1, 1) = '$' then
  view_name := copy(view_name, 2, length(view_name) - 1);
  people := addrBook.GetView(view_name);
  person := people.GetFirstDocument;
  if Person <> nil then
  begin
  Items := Person.Items;
  for z := 0 to VarArrayHighBound(Items, 1) -
  VarArrayLowBound(Items, 1) do
  begin
  Item := NotesItem(IUnknown(Items[z]));
  tc := tv_info.Items.AddChild(tn, Item.Name);
  people := addrBook.GetView(view_name);
  person := people.GetFirstDocument;
  while (Person <> nil) do
  begin
  try
  try
  tv_info.Items.AddChild(tc, Person.GetFirstItem(Item.Name).Text
  {Item.Text});
  except
  end;
  finally
  Person := People.GetDocument(Person);
  end;
  end;
  end;
  end;
  end;
  end;
 end;
end;
end.

Взято с Delphi Knowledge Base: http://www.baltsoft.com/

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...