Microsoft KB Archive/210247

= ACC2000: How to Programmatically Change a Control Type =

Article ID: 210247

Article Last Modified on 10/11/2006

-

APPLIES TO


 * Microsoft Access 2000 Standard Edition

-



This article was previously published under Q210247



Moderate: Requires basic macro, coding, and interoperability skills.

This article applies to a Microsoft Access database (.mdb) and to a Microsoft Access project (.adp).



SUMMARY
This article shows you how to programmatically change a control on a form from one type to another. By using the ControlType property in a Visual Basic for Applications procedure, you can change a text box into a combo box, a toggle button into an option button, and so on.



MORE INFORMATION
The method described in this article uses a custom Visual Basic for Applications function that is called from a command button on Form1 to change the ControlType property of a text box on Form2 to a combo box. You have to use two forms because the ControlType property is available only in a form's Design view. As a result, you cannot use Visual Basic for Applications to change a control's type while the form that contains the control is open in Form view.

To programmatically change a form's control type, follow these steps:

CAUTION: If you follow the steps in this example, you modify the sample database Northwind.mdb. You may want to back up the Northwind.mdb file and follow these steps on a copy of the database.

 Start Microsoft Access and open the sample database Northwind.mdb. Create a new form not based on any table or query, and then name it Form1. Add a command button to Form1, and then set its properties as follows:

Name: Command0

Caption: Change Control Type

  Set the command button's OnClick property to the following event procedure: Private Sub Command0_Click

If Forms!Form2.CurrentView <> 0 Then DoCmd.OpenForm "Form2", _ acDesign

If Forms!Form2![CategoryName].ControlType = acComboBox Then Forms!Form2![CategoryName].ControlType = acTextBox Else Forms!Form2![CategoryName].ControlType = acComboBox End If

End Sub  Close and save Form1. Make a copy of the Categories form and call it Form2.</li> Open Form2 in Form view.</li> Open Form1 in Form view and click the command button. Note that Form2 opens in Design view and that the CategoryName control changes from a text box to a combo box. When you click the Change Control Type button again on Form1, the CategoryName control in Form2 changes back to a text box.</li></ol>

NOTE: When you change a control to another type of control, Microsoft Access copies the appropriate property settings from the original control to the new control. If a property exists for the original control but not for the new control, Microsoft Access does not copy it. If a property exists for the new control but not for the original control, Microsoft Access sets the property to the default control for that type of control.

<div class="references_section">