Microsoft KB Archive/238755

= OL2000: How to Programmatically Create a Form =

Article ID: 238755

Article Last Modified on 11/23/2006

-

APPLIES TO


 * Microsoft Outlook 2000 Standard Edition

-



This article was previously published under Q238755



SUMMARY
If you are creating an advanced solution using Outlook, you may have a requirement to programmatically create a form where the layout varies based on certain criteria. This article provides an overview and starting point for building this type of solution.



MORE INFORMATION
Unlike previous versions, Outlook 2000 was specifically designed so you can programmatically create forms.

IMPORTANT: You should carefully evaluate how you use this capability. The following key issues should be taken into account:

 Depending on where forms and items are stored, solutions that repeatedly republish forms can place additional performance and resource burdens on a Microsoft Exchange Server. These types of solutions can cause potential problems with the Outlook forms cache and you should carefully evaluate how this approach may impact the cache. In particular, ensure that forms that are published to multiple locations do not have the same name. For additional information about the Outlook forms cache, click the article number below to view the article in the Microsoft Knowledge Base:

232303 OL2000: How the Forms Cache Works

 If you've already created items that use a published form, and then programmatically changed the form, there's a good chance that those items are one-offs. You should carefully plan and evaluate the use of one-off forms and how they relate to your forms solution. For additional information about one-off forms, click the article number below to view the article in the Microsoft Knowledge Base:

207896 OL2000: Working with Form Definitions and One-Off Forms

 The Outlook object model does not directly support switching between the compose and read pages of a form. Therefore, any programmatic changes you make to a form are done on the compose pages, not the read pages. Trying to develop a workaround can be problematic and most likely will involve using the .Execute method on the CommandBars objects to toggle a form between compose and read pages.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact a Microsoft Certified Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, please visit the following Microsoft Web site:

https://partner.microsoft.com/global/30000104

For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:

http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Sample Code to Add a Control to a Form
The following Microsoft Outlook Visual Basic for Applications code illustrates how you can programmatically add a Label and Listbox control to a new page of the default Contact form. Be sure to reference the Microsoft Forms 2.0 Object Library before running the code. Sub CreateForm

Dim oNewItem As Outlook.ContactItem Dim oInsp As Outlook.Inspector Dim oPage As Object Dim oLabel As MSForms.Control Dim oLB As MSForms.Control

Set oNewItem = Application.CreateItem(olContactItem) Set oInsp = oNewItem.GetInspector

' Create a new form page called "My Page" Set oPage = oInsp.ModifiedFormPages.Add("My Page")

' Add the label to the form page Set oLabel = oPage.Controls.Add("Forms.Label.1", "lblCompanies", True)

' Size and position the label PlaceControl oLabel, 5, 10, 13, 100

' Set the caption of the label oLabel.Caption = "Companies:"

' Add the listbox to the form page Set oLB = oPage.Controls.Add("Forms.ListBox.1", "cmdCompanies", True)

' Size and position the listbox PlaceControl oLB, 18, 10, 50, 100

' Populate the listbox oLB.AddItem "Microsoft" oLB.AddItem "ACME" oLB.AddItem "Northwind"

' Change the form page so it defaults to "My Page" oInsp.SetCurrentFormPage "My Page"

oNewItem.Display

' Clean up  Set oListBox = Nothing Set oLabel = Nothing Set oPage = Nothing Set oInsp = Nothing Set oNewItem = Nothing

End Sub

Sub PlaceControl(Ctrl As MSForms.Control, T As Integer, _                L As Integer, H As Integer, W As Integer) Ctrl.Top = T  Ctrl.Left = L   Ctrl.Height = H   Ctrl.Width = W End Sub This code sample simply displays a newly created form. For additional information about how to programmatically create and publish a new custom form, click the article number below to view the article in the Microsoft Knowledge Base:

208520 OL2000: Programming Examples for Referencing Items and Folders

Refer to the Items.Add and CreateItemFromTemplate methods in the article.

