Как работать с адресной книгой Lotus Notes?
01.01.2007
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.GetNextDocument(Person); end; end; end; end; end; end; end; end; end.
Взято с Delphi Knowledge Base: https://www.baltsoft.com/