CreateControl, CreateReportControl Functions

Description

You can use the CreateControl function to create a control on a specified open form. You can use the CreateReportControl function to create a control on a specified open report.

For example, suppose you are building a custom wizard that allows users to easily construct a particular form. You can use the CreateControl function in your wizard to add the appropriate controls to the form.

Syntax

CreateControl(formname, controltype[, section[, parent[, columnname[, left[, åtop[, width[, height]]]]]]])CreateReportControl(reportname, controltype[, section[, parent[, åcolumnname[, left[, top[, width[, height]]]]]]])

The CreateControl and CreateReportControl functions take the following arguments.

Argument Description
formname, reportname A string expression identifying the name of the open form or report on which you want to create the control.
controltype One of the following intrinsic constants identifying the type of control you want to create. You can view these constants and paste them into your code from the Object Browser. Click the Object Browser button. Then click Access in the Libraries/Databases box, and click Constants in the Modules/Classes box.


Constant Value Control
acLabel 100 Label
acRectangle 101 Rectangle
acLine 102 Line
acImage 103 Image
acCommandButton 104 Command button
acOptionButton 105 Option button
acCheckBox 106 Check box
acOptionGroup 107 Option group
acBoundObjectFrame 108 Bound object frame
acTextBox 109 Text box
acListBox 110 List box
acComboBox 111 Combo box
acSubform 112 Subform
acObjectFrame 114 Unbound object frame
acPageBreak 118 Page break
acCustomControl 119 Custom control
acToggleButton 122 Toggle button


Argument Description
section One of the following intrinsic constants identifying the section that will contain the new control.


Constant Section
acDetail (Default) Detail section
acHeader Form or report header
acFooter Form or report footer
acPageHeader Page header
acPageFooter Page footer
acGroupLevel1Header Group-level 1 header (reports only)
acGroupLevel1Footer Group-level 1 footer (reports only)
acGroupLevel2Header Group-level 2 header (reports only)
acGroupLevel2Footer Group-level 2 footer (reports only)
If a report has additional group levels, the header/footer pairs are numbered consecutively, beginning with 9.
parent String expression identifying the name of the parent control of an attached control. For controls that have no parent control, use a zero-length string for this argument.
columnname Name of the field to which the control will be bound, if it is to be a data-bound control.
If you are creating a control that will not be bound to a field, use a zero-length string for this argument.
left, top Numeric expressions indicating the coordinates for the upper-left corner of the control in twips.
width, height Numeric expressions indicating the width and height of the control in twips.


Remarks

Use the CreateControl and CreateReportControl functions in a custom wizard to create controls on a form or report. Both functions return a Control object.

You can use the CreateControl and CreateReportControl functions only in form Design view or report Design view, respectively.

You use the parent argument to identify the relationship between a main control and a subordinate control. For example, if a text box has an attached label, the text box is the main (or parent) control and the label is the subordinate (or child) control. When you create the label control, set its parent argument to a string identifying the name of the parent control. When you create the text box, set its parent argument to a zero-length string.

You also set the parent argument when you create check boxes, option buttons, or toggle buttons. An option group is the parent control of any check boxes, option buttons, or toggle buttons that it contains. The only controls that can have a parent control are a label, check box, option button, or toggle button. All of these controls can also be created independently, without a parent control.

Set the columnname argument according to the type of control you are creating and whether or not it will be bound to a field in a table. The controls that may be bound to a field include the text box, list box, combo box, option group, and bound object frame. Additionally, the toggle button, option button, and check box controls may be bound to a field if they are not contained in an option group.

If you specify the name of a field for the columnname argument, you create a control that is bound to that field. All of the control’s properties are then automatically set to the settings of any corresponding field properties. For example, the value of the control’s ValidationRule property will be the same as the value of that property for the field.

Tip If your wizard creates controls on a new or existing form or report, it must first open the form or report in Design view.

To remove a control from a form or report, use the DeleteControl and DeleteReportControl statements.

See Also

CreateForm, CreateReport Functions; DeleteControl, DeleteReportControl Statements; Section Property.

Example

The following example first creates a new form based on an Orders table. It then uses the CreateControl function to create a text box control and an attached label control on the form.


Sub NewControls()
    Dim frm As Form


    Dim ctlLabel As Control, ctlText As Control


    Dim intDataX As Integer, intDataY As Integer


    Dim intLabelX As Integer, intLabelY As Integer


    ' Create new form with Orders table as its record source.


    Set frm = CreateForm
    frm.RecordSource = "Orders"


    ' Set positioning values for new controls.


    intLabelX = 100
    intLabelY = 100
    intDataX = 1000


    intDataY = 100
    ' Create unbound default-size text box in detail section.


    Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _
        intDataX, intDataY)
    ' Create child label control for text box.


    Set ctlLabel = CreateControl(frm.Name, acLabel, , ctlText.Name, _
        "NewLabel", intLabelX, intLabelY)
    ' Restore form.


    DoCmd.RestoreSub