Pocket PC設備上的第三種常用Pocket Outlook數據是約會。Pocket PC設備上的約會應用程序如圖23-6所示。
與任務和聯繫人一樣,約會對象爲將約會數據整合到Pocket PC應用程序提供了一種簡單的實現方法,避免了複雜的編程。約會對象同樣提供了Categories屬性,該屬性可以用來標識適用於指定Pocket PC應用程序的特殊約會數據。通過Pocket Outlook.NET組件所提供的Appointments屬性和Appointment對象,可以訪問約會數據。
OutlookSession對象的Appointments屬性,提供了對駐留在設備上的約會集合的訪問。實際上,Appointments屬性提供了訪問POOM(全部任務數據駐留在其內部)內的Appointments文件夾的接口。該屬性鏈接到包含所有約會的項目集合。
在本節後續部分介紹的幾個示例中,將演示Appointments屬性及其項目集合被用來檢索約會的功能。
與約會相關的所有操作都是通過引用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方法保存修改。