使用任务对象
从开发人员的角度来看,使用任务可能出于多种不同的原因。例如,可以在Pocket PC应用程序内通过任务的方式,记录某个项目中等待完成的后续工作。Pocket PC设备上的任务应用程序如图23-2所示。
图23-2 任务应用程序
InTheHand的Pocket Outlook.NET组件所提供的Task对象和OutlookSession对象的Tasks属性,实现了对任务功能的编程访问。
23.4.1 Tasks属性
OutlookSession对象的Tasks属性提供了对驻留在设备上的任务集合的访问。实际上,Tasks属性提供了访问POOM(全部任务数据驻留在其内部)内的Tasks文件夹的接口。该属性链接到包含所有任务的项目集合。
在本节后续部分介绍的几个示例中,将演示Tasks属性及其项目集合被用来检索任务的功能。
23.4.2 Task对象
通过Task对象可以实现对单个任务的引用。表23-1列出了Task对象的常用属性。表23-2列出了Task对象的常用方法。
表23-1 Task对象的常用属性
属性 | 说明 |
Body | 任务所附备注的文本 |
Categories | 分配给任务的类别 |
Complete | 标识任务是否已完成 |
DateCompleted | 任务的完成日期 |
DueDate | 任务的截止日期 |
Importance | 任务的重要性 |
IsRecurring | 任务是一次性的还是反复发生的 |
ItemId | 任务的惟一标识符 |
ReminderSet | 是否就该任务提醒用户 |
StartDate | 任务的开始日期 |
Subject | 任务的主题 |
表23-2 Task对象的常用方法
方法 | 说明 |
Copy | 创建现有任务的副本 |
Delete | 删除任务 |
ShowDialog | 使用本机Task接口显示任务 |
Update | 将修改保存到任务 |
23.4.3 检索所有任务
与任务操作相关的最常见功能之一就是检索任务。开发人员可以用多种方式来检索任务:
· 检索所有任务的集合;
· 检索所有任务的子集;
· 检索单个任务。
下面首先介绍如何检索所有任务,因为这是一种常用的方法,并且是检索任务的最简单方法。清单23-1提供了一个简单示例,该示例检索驻留在某个设备上的所有任务。
清单23-1 检索所有任务
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myTasks As PimItemCollection
Private Sub PoomDemo_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' 检索所有任务
myTasks = myOutlookSession.Tasks.Items
End Sub
该示例包括了以下主要组成部分:
· Imports语句,该语句必须位于模块的顶部。
· OutlookSession对象的声明语句。
· PimItemCollection对象的声明,该对象可以保存任何Outlook项目的集合。在本例中,它用于保存任务集合。
· 将任务集合从OutlookSession对象的实例myOutlookSession加载到PimItemCollection对象的实例myTasks中。
此时,PimItemCollection对象的实例myTasks包含一组任务对象,分别对应于驻留在测试设备上的各个任务。可以对该集合进行循环处理,将任务数据添加到ListBox或ComboBox控件上,还可以查看特定任务信息或者引用该集合内的特定任务。
23.4.4 检索所选任务
用户在有些时候可能需要检索特定的任务。这些特定任务可能是任务子集,也可能是单个的任务。使用Items集合的Restrict方法,可以轻松地做到这一点。清单23-2演示如何检索任务子集。在该示例中仅检索类别为demo的任务。
清单23-2 检索所选任务
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myTasks As PimItemCollection
Private Sub btnSelect_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSelect.Click
Dim strQuery As String
' 检索所选任务
strQuery = "[Categories] = " & ControlChars.Quote & "demo" & ControlChars.Quote
myTasks = myOutlookSession.Tasks.Items.Restrict(strQuery)
End Sub
大部分准备工作与检索所有任务所需的准备工作相同。仍然需要添加Imports语句,声明OutlookSession对象变量,以及声明PimItemCollection变量。
在清单23-2的btnSelect_Click过程中,实现检索匹配查询条件的任务的功能。首先生成了一个查询字符串,该查询字符串相当一个SQL SELECT语句的WHERE子句。该查询字符串随后做为参数传递给Restrict方法,检索匹配查询条件的任务。除了使用查询字符串来筛选任务之外,还可以根据通过Task对象提供的属性来筛选任务。
23.4.5 显示任务
POOM提供的一个非常有用的功能特性,是能够在Pocket PC应用程序界面上显示本机的Pocket Outlook数据。也就是说,其显示效果就像用户进入Task应用程序并选择查看特定任务一样。
该功能通过Task对象的ShowDialog的方法实现,ShowDialog方法从Pocket Outlook.NET组件中的PimItem类继承而来。清单23-3演示了如何使用该方法。
清单23-3 显示任务
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myTasks As PimItemCollection
Private Sub btnDisplay_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDisplay.Click
Dim myTask As Task
' 显示任务
myTask = myTasks.Item(0)
myTask.ShowDialog()
End Sub
与前面的两个示例一样,首先要添加Imports语句,并声明OutlookSession和PimItemCollection变量。
在清单23-3的btnDisplay_Click过程中,首先从检索的所有任务集合中,将单个任务(即第一个任务)提取到Task对象变量中。该对象提供了ShowDialog方法,随后调用该方法在图23-3所示的界面里显示所选任务。
图23-3 显示任务
23.4.6 增加任务
增加新任务的过程包含3个步骤。首先创建一个新任务,其次配置新任务,最后保存新任务。清单23-4演示了如何增加新任务。
清单23-4 增加任务
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myTasks As PimItemCollection
Private Sub btnAdd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnAdd.Click
Dim myTask As Task
' 创建一个新任务
myTask = myOutlookSession.Tasks.Items.AddNew
' 配置新任务
With myTask
.Body = "添加一个简单的任务"
.Categories = "demo"
.DueDate = Today.Date
.Importance = Importance.High
.ReminderOptions = ReminderOptions.Dialog
.ReminderSet = True
.StartDate = Today.Date
.Subject = "sample task"
' 最后,保存新任务
.Update()
End With
End Sub
与前面的所有示例一样,首先要添加Imports语句,并声明OutlookSession和PimItem Collection变量。
在清单23-4的btnAdd_Click过程中,完成了增加新任务所包括的3个步骤。首先,在OutlookSession对象的Tasks属性集合中增加一个新任务。其次,配置该新任务的各项属性。最后,调用Task对象的Update方法保存该任务。
23.4.7 修改任务
修改任务与增加任务类似,修改任务同样也包括3个步骤。而与增加新任务的3个步骤惟一不同之处是,修改任务的第一步是将现有任务加载到Task对象中。清单23-4演示了修改任务所执行的3个步骤。
清单23-5 修改任务
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myTasks As PimItemCollection
Private Sub btnModify_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnModify.Click
Dim myTask As Task
' 检索所有任务
myTasks = myOutlookSession.Tasks.Items
myTask = myTasks.Item(0)
' 配置新任务
With myTask
.Body = "修改任务"
' 最后,保存新任务
.Update()
End With
End Sub