![]() |
Obtain property value by name
Need to access Appointment property by propertyname.
How to do that? Let's say I want to write a function and pass a property name and then return the value: {Delphi} function getPropValue(Propname: String): Variant; begin Result := AppointmentItem. ????? end; |
Obtain property value by name
You need to handle every supported case, e.g.: Select Case Propname Case "Start": getPropValue=Item.Start Case "Subject": getPropValue=Item.Subject End Select -- Best regards Michael Bauer - MVP Outlook : Outlook Categories? Category Manager Is Your Tool : VBOffice Reporter for Data Analysis & Reporting : http://www.vboffice.net/product.html?pub=6&lang=en Am Wed, 8 Jul 2009 08:25:21 -0700 (PDT) schrieb MB34: Need to access Appointment property by propertyname. How to do that? Let's say I want to write a function and pass a property name and then return the value: {Delphi} function getPropValue(Propname: String): Variant; begin Result := AppointmentItem. ????? end; |
Obtain property value by name
Need to access Appointment property by propertyname.
How to do that? Let's say I want to write a function and pass a property name and then return the value: {Delphi} function getPropValue(Propname: String): Variant; begin * Result := AppointmentItem. ????? end; You need to handle every supported case, e.g.: Select Case Propname Case "Start": getPropValue=Item.Start Case "Subject": getPropValue=Item.Subject End Select You mean that there is no way without handling each property in a case statement? The Delphi Outlook object model does not expose the ItemProperties either. |
Obtain property value by name
Or use Item.ItemProperties.Item("property name") for simple, non-object
properties. -- Sue Mosher, Outlook MVP Author of Microsoft Outlook 2007 Programming: Jumpstart for Power Users and Administrators http://www.outlookcode.com/article.aspx?id=54 "Michael Bauer [MVP - Outlook]" wrote in message ... You need to handle every supported case, e.g.: Select Case Propname Case "Start": getPropValue=Item.Start Case "Subject": getPropValue=Item.Subject End Select -- Best regards Michael Bauer - MVP Outlook : Outlook Categories? Category Manager Is Your Tool : VBOffice Reporter for Data Analysis & Reporting : http://www.vboffice.net/product.html?pub=6&lang=en Am Wed, 8 Jul 2009 08:25:21 -0700 (PDT) schrieb MB34: Need to access Appointment property by propertyname. How to do that? Let's say I want to write a function and pass a property name and then return the value: {Delphi} function getPropValue(Propname: String): Variant; begin Result := AppointmentItem. ????? end; |
Obtain property value by name
On Jul 8, 2:32 pm, "Sue Mosher [MVP]" wrote:
Or use Item.ItemProperties.Item("property name") for simple, non-object properties. Thanks, Michael and Sue... Quote:
I am able to get it by using the code below instead of either modifying the Outlook2000.pas file or importing the Outlook TLB on my system. const EmptyDispParams: TDispParams = (rgvarg: nil; rgdispidNamedArgs: nil; cArgs: 0; cNamedArgs: 0); var intLCID: Integer; function GetDispId(const Obj: IDispatch; const Member: WideString; DispIdPtr: PInteger): Boolean; begin Result := Succeeded(Obj.GetIdsOfNames(GUID_NULL, @Member, 1, intLCID, DispIdPtr)); end; function InvokePropertyGet(const Obj: IDispatch; Name: WideString):Variant; var TheDispId, ArgErr: Integer; DispParams: TDispParams; begin if GetDispId(Obj, Name, @TheDispId) then begin DispParams := EmptyDispParams; OleCheck(Obj.Invoke(TheDispId, GUID_NULL, intLCID, DISPATCH_PROPERTYGET, DispParams, @Result, nil, @ArgErr)); end; end; // Usage: var AApptCompareFieldValue: Variant; OutlookPropertyName: WideString; begin intLCID := LOCALE_USER_DEFAULT; OutlookPropertyName := 'LastModificationTime'; AApptCompareFieldValue := InvokePropertyGet(AOutlookAppointmentItem, OutlookPropertyName); Showmessage(AApptCompareFieldValue); end; |
Obtain property value by name
ItemProperties was added in a version after Outlook 2000. I don't remember
which. Please give your Outlook version whenever you post a new issue here; it's almost always relevant. -- Sue Mosher, Outlook MVP Author of Microsoft Outlook 2007 Programming: Jumpstart for Power Users and Administrators http://www.outlookcode.com/article.aspx?id=54 "MB34" wrote in message ... On Jul 8, 2:32 pm, "Sue Mosher [MVP]" wrote: Or use Item.ItemProperties.Item("property name") for simple, non-object properties. Thanks, Michael and Sue... Quote:
In the included Outlook2000.pas file, ItemProperties is not exposed so I am able to get it by using the code below instead of either modifying the Outlook2000.pas file or importing the Outlook TLB on my system. const EmptyDispParams: TDispParams = (rgvarg: nil; rgdispidNamedArgs: nil; cArgs: 0; cNamedArgs: 0); var intLCID: Integer; function GetDispId(const Obj: IDispatch; const Member: WideString; DispIdPtr: PInteger): Boolean; begin Result := Succeeded(Obj.GetIdsOfNames(GUID_NULL, @Member, 1, intLCID, DispIdPtr)); end; function InvokePropertyGet(const Obj: IDispatch; Name: WideString):Variant; var TheDispId, ArgErr: Integer; DispParams: TDispParams; begin if GetDispId(Obj, Name, @TheDispId) then begin DispParams := EmptyDispParams; OleCheck(Obj.Invoke(TheDispId, GUID_NULL, intLCID, DISPATCH_PROPERTYGET, DispParams, @Result, nil, @ArgErr)); end; end; // Usage: var AApptCompareFieldValue: Variant; OutlookPropertyName: WideString; begin intLCID := LOCALE_USER_DEFAULT; OutlookPropertyName := 'LastModificationTime'; AApptCompareFieldValue := InvokePropertyGet(AOutlookAppointmentItem, OutlookPropertyName); Showmessage(AApptCompareFieldValue); end; |
All times are GMT +1. The time now is 06:12 AM. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com