Met onderstaand voorbeeld wordt een treeview gevuld met de folderstructuur, zoals deze in Outlook aangetroffen wordt. Binnen de 'MAPI' namespace van Outlook kan een lijst met folders worden opgevraagd. Iedere folder kan uiteraard zelf ook weer folders bevatten. De geneste procedure LoadFolder binnen RetrieveOutlookFolders zorgt voor de recursie van de folders.
ES
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, comobj;
type
TForm1 = class(TForm)
Button1: TButton;
TreeView1: TTreeView;
procedure Button1Click(Sender: TObject);
private
procedure RetrieveOutlookFolders(tvFolders: TTreeView);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.RetrieveOutlookFolders(tvFolders: TTreeView);
procedure LoadFolder(ParentNode: TTreeNode; Folder: OleVariant);
var
i: Integer;
node: TTreeNode;
begin
for i := 1 to Folder.Count do
begin
node := tvFolders.Items.AddChild(ParentNode, Folder.Item[i].Name);
LoadFolder(node, Folder.Item[i].Folders);
end;
end;
var
outlook: OLEVariant;
NameSpace: OLEVariant;
begin
outlook := CreateOleObject('Outlook.Application');
NameSpace := outlook.GetNameSpace('MAPI');
LoadFolder(nil, NameSpace.Folders);
outlook := UnAssigned;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RetrieveOutlookFolders(TreeView1);
end;
end.