为什么我不能使用像“OutlookApp.ActiveExplorer.Items;”这样的东西?

时间:2015-12-11 13:55:21

标签: delphi outlook

//有什么帮助吗?
//我使用Delphi + Outlook

  

为什么我不能使用像   “OutlookApp.ActiveExplorer的;”
  [想要访问ActiveExplorer中的所有项目]

     

为什么只通过
提供MailItems   OutlookApp.ActiveExplorer。的选择
  [想要访问所有项目ActiveExplorer]

Procedure TFLV.Button2Click(Sender: TObject);
CONST
olFolderInbox = $00000006;   //...
VAR                          //Declaring VARs
OutlookApp,                  //The outlook App
MailItem,                    //A MailItem
OLEFolderInbox : OLEVariant; //...

XX  : Integer;
Itm : TListItem;
begin
ListView1.Clear;

OutlookApp := GetActiveOleObject('Outlook.Application');

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Problem - The following Display all the entries in a 
//different order from Outlook's InBox!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
TRY////////////////////////////////////////////////////////////////////
{} //OLEMailItems := OutlookApp.ActiveExplorer.Items; 
{} //Does not exist so I had to use this:
{}
{} OLEFolderInbox := OutlookApp.Session.GetDefaultFolder(olFolderInbox);
{}                OLEMailItems := OLEFolderInbox.Items;
{} FOR XX := 1 to OLEMailItems.Count DO
{} BEGIN
{} Itm := ListView1.Items.Add;
{} Itm.Caption := DateTimeToStr(OLEMailItems.Item[XX].ReceivedTime );
{} Itm.SubItems.Add(  OLEMailItems.Item[XX].Recipients.Item[1].Name);
{} Itm.SubItems.Add(  OLEMailItems.Item[XX].SenderName             );
{} Itm.SubItems.Add(  OLEMailItems.Item[XX].Subject                );
{} Itm.ImageIndex := -1;
{} END;
{}     
{}FINALLY
{}   OLEMailItems   := VarNull;
{}   OLEFolderInbox := VarNull;
{}   OutlookApp     := VarNull;
{}END;/////////////////////////////////////////////////////////



{}//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{}//Problem: Why must I             "ActiveExplorer.SelectAllItems"  !!!!!
{}//         Why not something like "OutlookApp.ActiveExplorer.Items"!!!!!
{}//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{}TRY/////////////////////////////////////////////////////////////////////
{}                                OutlookApp.ActiveExplorer.SelectAllItems;
{}                OLEMailItems := OutlookApp.ActiveExplorer.Selection;
{}
{} FOR XX := 1 To OLEMailItems.Count DO
{} BEGIN
{} Itm := ListView1.Items.Add;
{} Itm.Caption := DateTimeToStr(OLEMailItems.Item[XX].ReceivedTime    );
{} Itm.SubItems.Add(     OLEMailItems.Item[XX].Recipients.Item[1].Name);
{} Itm.SubItems.Add(     OLEMailItems.Item[XX].SenderName             );
{} Itm.SubItems.Add(     OLEMailItems.Item[XX].Subject                );
{} Itm.ImageIndex := -1;
{} END;
{}     
{}FINALLY
{}     OLEMailItems   := VarNull;  // := Nothing
{}     OLEFolderInbox := VarNull;  // := Nothing
{}     OutlookApp     := VarNull;  // := Nothing
{}END;///////////////////////////////////////////////////////////

end;

1 个答案:

答案 0 :(得分:0)

使用Application.ActiveExplorer.CurrentFolder.Items - 您将获得当前显示的文件夹中的所有项目。