Mega Code Archive
LotusNotes and Delphi Scaning Personal Address Book
Title: LotusNotes and Delphi: Scaning Personal Address Book
Question: How work with LotusNotes via OleAuto
Answer:
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 (addrBooknil) 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 Personnil 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 (Personnil) do begin
try
try
tv_info.Items.AddChild(tc,Person.GetFirstItem(Item.Name).Text{Item.Text});
except
end;
finally
Person:=People.GetNextDocument(Person);
end;
end;
end;
end;
end;
end;
end;
end;
end.