Pocket PC设备上的第三种常用Pocket Outlook数据是约会。Pocket PC设备上的约会应用程序如图23-6所示。
与任务和联系人一样,约会对象为将约会数据整合到Pocket PC应用程序提供了一种简单的实现方法,避免了复杂的编程。约会对象同样提供了Categories属性,该属性可以用来标识适用于指定Pocket PC应用程序的特殊约会数据。通过Pocket Outlook.NET组件所提供的Appointments属性和Appointment对象,可以访问约会数据。
23.6.1 Appointments属性
OutlookSession对象的Appointments属性,提供了对驻留在设备上的约会集合的访问。实际上,Appointments属性提供了访问POOM(全部任务数据驻留在其内部)内的Appointments文件夹的接口。该属性链接到包含所有约会的项目集合。
在本节后续部分介绍的几个示例中,将演示Appointments属性及其项目集合被用来检索约会的功能。
23.6.2 Appointment对象
与约会相关的所有操作都是通过引用Appointment对象来实现。表23-5列出了Appointment对象的常用属性。表23-6显示了Appointment对象的常用方法。
表23-5 Appointment对象的常用属性
属性 | 说明 |
AllDayEvent | 指定是否是全天事件。如果指定为True,约会不能指定为会议 |
Body | 约会所附带的备注 |
Categories | 分配给约会的类别 |
Duration | 标识约会有效天数。返回值必须小于31天 |
End | 指定约会的结束时间 |
Location | 指定约会地 |
ReminderSet | 是否就该约会提醒用户 |
Start | 指定约会的开始时间 |
Subject | 约会的主题 |
表23-6 Appointment对象的常用方法
方法 | 说明 |
Cancel | 取消会议约会请求 |
Copy | 创建现有约会的副本 |
Delete | 删除约会 |
ShowDialog | 使用本机 Appointment接口显示约会 |
Update | 将修改保存到约会 |
Send | 向收件箱发出会议约会请求 |
23.6.3 检索所有约会
在Pocket PC应用程序里通常不会检索所有约会,典型的情况是检索指定日期范围内的约会信息。但从技术实现的角度而言,还是有必要介绍如何实现检索所有约会的编程实现方法。与任务和联系人一样,同样可以使用多种方式来检索约会数据:
· 检索所有约会的集合;
· 检索所有约会的子集;
· 检索单个约会。
清单23-11演示了如何检索所有约会。请注意,根据驻留在设备上的约会数量的不同,这可能会产生相当大的集合,因此在大数据量的情况下需要考虑应用程序的性能问题。
清单23-11 检索所有约会
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myAppointments As PimItemCollection
Private Sub ContactDemo_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' 检索所有约会
myAppointments = myOutlookSession.Appointments.Items
End Sub
该示例的主要部分包括:
· Imports语句,该语句必须位于模块的顶部。
· OutlookSession对象的声明语句。
· PimItemCollection对象的声明,该对象保存了任何Outlook项目的集合。在该示例中,它是约会集合。
· 将约会集合从OutlookSession对象的实例myOutlookSession加载到 PimItemCollection对象的实例myContacts中。
在这里,集合myAppointments包含一组约会对象,分别对应于驻留在测试设备上的各个约会。就像任何集合一样,可以对该集合进行循环处理来访问各个约会以及查看特定的约会信息。
23.6.4 检索指定日期的约会
虽然有些时候可能需要检索所有联系人数据,但是更常见的情况是检索指定日期的约会。清单23-12演示如何检索指定日期的约会。在该示例中,首先演示检索当日约会,其次演示检索明日约会,最后演示如何检索下周的约会
清单23-12 检索指定日期的约会
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myAppointments As PimItemCollection
Private Sub btnSelect_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSelect.Click
Dim strQuery As String
Dim tmpDate As Date
' 检索今天的约会
strQuery = "[Start] = " & _
ControlChars.Quote & Date.Today.ToShortDateString &
ControlChars.Quote
myAppointments = myOutlookSession.Appointments.Items.Restrict
(strQuery)
' 检索明天的约会
tmpDate = Date.Today.AddDays(1)
strQuery = "[Start] = " & _
ControlChars.Quote & tmpDate.Date.ToShortDateString &
ControlChars.Quote
myAppointments = myOutlookSession.Appointments.Items.Restrict
(strQuery)
' 检索下周的约会
tmpDate = Date.Today.AddDays(7)
strQuery = "[Start] >= " & _
ControlChars.Quote & Date.Today.ToShortDateString &
ControlChars.Quote
strQuery = strQuery & " AND [Start] < " & ControlChars.Quote & _
tmpDate.Date.ToShortDateString & ControlChars.Quote
myAppointments = myOutlookSession.Appointments.Items.Restrict
(strQuery)
End Sub
大部分准备工作与检索所有约会需要的准备工作完全相同。仍然需要Imports语句,并且声明OutlookSession和PimItemCollection这两个对象。
在清单23-12的btnSelect_Click过程中,实现检索匹配查询条件的约会的功能。首先,构建了一个查询字符串,该字符串分别限制只返回匹配查询条件的约会。该查询字符串随后做为参数传递给Restrict方法,检索匹配查询条件的约会。除了使用查询字符串来筛选约会之外,还可以根据通过Appointment对象提供的属性来筛选约会。
23.6.5 显示约会
与显示任务和联系人一样,同样能够在Pocket PC应用程序界面上显示本机的约会数据。其显示效果也如同用户进入Appointment应用程序,并选择查看特定约会一样。
该功能通过Appointment对象的ShowDialog方法实现。清单23-13演示了一个使用该技术的示例。
清单23-13 显示约会
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myAppointments As PimItemCollection
Private Sub btnDisplay_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDisplay.Click
Dim myAppointment As Appointment
' 显示第一个约会
myAppointment = myAppointments.Item(0)
myAppointment.ShowDialog()
End Sub
像前面的两个约会操作示例一样,需要在模块中添加Imports语句以及OutlookSession和PimItemCollection这两个变量的声明。
在清单23-13的btnDisplay_Click过程中,首先检索得到所有约会的集合。从该约会集合中将单个约会(第一个约会)提取到Appointment对象变量中。然后通过Appointment对象的ShowDialog方法在图23-7所示的界面里显示所选的约会。
图23-7 显示约会
23.6.6 增加约会
增加新约会的过程同样包含3个步骤。首先创建一个新约会,其次配置新约会,最后保存新约会。清单23-14演示了如何增加新约会的过程。
清单23-14 增加约会
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myAppointments As PimItemCollection
Private Sub btnAdd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnAdd.Click
Dim myAppointment As Appointment
' 创建一个新约会
myAppointment = myOutlookSession.Appointments.Items.AddNew
' 配置约会
With myAppointment
.Body = "添加一个简单的约会"
.Categories = "demo"
.End = DateAdd(DateInterval.Hour, 1, Now)
.Location = "广州天河体育馆"
.Start = Now
.Subject = "演示约会"
' 最后,保存约会
.Update()
End With
End Sub
与前面的所有约会示例一样,首先需要添加Imports语句,并声明OutlookSession和PimItemCollection变量。
在清单23-14的btnAdd_Click过程中,完成了增加新约会所包括的3个步骤。首先,在OutlookSession对象的Appointments属性集合中增加一个新约会。其次,对新约会的属性进行配置。最后,调用Appointment对象的Update方法来保存该约会。
23.6.7 修改约会
修改约会与添加约会类似,不同的是将现有约会加载Appointment对象。清单23-15演示了这一过程。
清单23-15 修改约会
Imports InTheHand.WindowsMobile.PocketOutlook
……
Dim myOutlookSession As New OutlookSession
Dim myAppointments As PimItemCollection
Private Sub btnModify_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnModify.Click
Dim myAppointment As Appointment
' 检索所有约会
myAppointments = myOutlookSession.Appointments.Items
' 修改第一个约会
myAppointment = myAppointments.Item(0)
With myAppointment
.Body = "修改约会"
.Update()
End With
End Sub
与前面的所有约会示例一样,首先添加Imports语句,并且声明OutlookSession和PimItemCollection变量。在清单23-15的btnModify_Click过程中,首先检索得到所有约会集合,加载第一个约会到Appointment对象中,然后修改该Appointment对象的属性,最后通过调用该Appointment对象的Update方法保存修改。