2015-12-11 36 views
-2

//有什么帮助?
//我用Delphi +展望为什么我不能使用“OutlookApp.ActiveExplorer.Items;”之类的东西?

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

为什么只有使可通过
OutlookApp.ActiveExplorer MailItems。 选择
[要访问的所有项目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; 
+0

问问微软。据我可以看到一个Outlook Explorer对象没有一个Items属性或方法https://msdn.microsoft.com/en-us/library/office/ff860356.aspx如果你必须使用它为什么会是问题语法X或Y来获得结果? –

+0

如果您问为什么不能使用'OutlookApp.ActiveExplorer.Items',那是因为它不存在,并且您不能使用不存在的属性。如果你要求我们推测为什么微软决定不提供'Items'属性,或者他们为什么决定只提供'MailBox'?如果是这样,我们无法帮助。联系Microsoft Office团队并询问他们;你可以在http://www.microsoft.com/office找到它们。 –

回答

0

使用Application.ActiveExplorer.CurrentFolder.Items - 你会得到在当前显示的文件夹中的所有项目。

相关问题