office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請(qǐng)用微信掃碼)

        

Access使用VBA代碼自動(dòng)創(chuàng)建控件的方法及示例

2017-08-28 16:58:00
zstmtony
原創(chuàng)
10321

能否通過程序代碼來自動(dòng)創(chuàng)建Access窗體上的控件呢,理論上是可行的。Access本身就提供了CreateControl這個(gè)方法

可以讓您通過VBA代碼來自動(dòng)創(chuàng)建控件,并指定控件的類型及相關(guān)屬性



Application.CreateControl方法

Office 2007
CreateControl方法創(chuàng)建一個(gè)指定的打開窗體上的一個(gè)控制。例如,假設(shè)您正在構(gòu)建一個(gè)允許用戶輕松構(gòu)建特定表單的自定義向?qū)?。您可以使用向?qū)е械?strong>CreateControl方法向窗體添加相應(yīng)的控件。

句法

表達(dá)式 .CreateControl(FormNameControlType,SectionParent,ColumnName,LeftTop,WidthHeight

表達(dá)式    表示Application對(duì)象的變量。

參數(shù)

名稱 必需/可選 數(shù)據(jù)類型 描述
窗體名稱 需要 要在其上創(chuàng)建控件的打開的表單或報(bào)表的名稱。
ControlType 需要 AcControlType 一個(gè)AcControlType 常量表示要?jiǎng)?chuàng)建的控件的類型。
部分 可選的 AcSection 一個(gè)AcSection常數(shù),用于標(biāo)識(shí)將包含新控件的部分。
可選的 變種 附件控件的父級(jí)控件的名稱。對(duì)于沒有父控件的控件,對(duì)此參數(shù)使用零長(zhǎng)度字符串,或者省略它。
的ColumnName 可選的 變種 控制將綁定的字段的名稱,如果它是一個(gè)數(shù)據(jù)綁定的控件。
左,上 可選的 變種 控制左上角的坐標(biāo)為緹。
寬度,高度 可選的 變種 指示控件的寬度和高度的數(shù)字表達(dá)式,以緹為單位。

回報(bào)價(jià)值
控制

備注

您可以使用自定義向?qū)е械腃reate ControlCreateReportControl方法在窗體或報(bào)表上創(chuàng)建控件。兩個(gè)方法都返回一個(gè)Control 對(duì)象。

您可以分別使用CreateControlCreateReportControl方法在表單設(shè)計(jì)視圖或報(bào)表設(shè)計(jì)視圖中。

您可以使用參數(shù)來標(biāo)識(shí)主控件和從屬控件之間的關(guān)系。例如,如果文本框具有附加的標(biāo)簽,則文本框是主(或父)控件,標(biāo)簽是從屬(或子)控件。創(chuàng)建標(biāo)簽控件時(shí),將其父參數(shù)設(shè)置為標(biāo)識(shí)父控件名稱的字符串。創(chuàng)建文本框時(shí),將其父參數(shù)設(shè)置為零長(zhǎng)度字符串。

您還可以在創(chuàng)建復(fù)選框,選項(xiàng)按鈕或切換按鈕時(shí)設(shè)置參數(shù)。選項(xiàng)組是其包含的任何復(fù)選框,選項(xiàng)按鈕或切換按鈕的父控件??梢杂懈缚丶奈ㄒ豢丶菢?biāo)簽,復(fù)選框,選項(xiàng)按鈕或切換按鈕。所有這些控件也可以獨(dú)立創(chuàng)建,無需父控件。

根據(jù)您正在創(chuàng)建的控件的類型設(shè)置columnname參數(shù),以及是否綁定到表中的字段。可能綁定到字段的控件包括文本框,列表框,組合框,選項(xiàng)組和綁定對(duì)象框架。此外,切換按鈕,選項(xiàng)按鈕和復(fù)選框控件可能會(huì)綁定到一個(gè)字段,如果它們不包含在選項(xiàng)組中。

如果指定columnname參數(shù)的字段名稱,則創(chuàng)建綁定到該字段的控件。然后,所有控件的屬性將自動(dòng)設(shè)置為任何相應(yīng)的字段屬性的設(shè)置。例如,控件的ValidationRule 屬性的值將與該字段的該屬性的值相同。

Bb237827.vs_note(EN-US,office.12).gif注意:  注意
如果您的向?qū)г谛碌幕颥F(xiàn)有的表單或報(bào)表上創(chuàng)建控件,則必須首先在“設(shè)計(jì)”視圖中打開表單或報(bào)表。

要從表單或報(bào)表中刪除控件,請(qǐng)使用DeleteControlDeleteReportControl 語句。

以下示例首先基于Orders表創(chuàng)建一個(gè)新表單。然后它使用CreateControl方法在表單上創(chuàng)建一個(gè)文本框控件和附加的標(biāo)簽控件。

Visual Basic應(yīng)用程序
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.Restore
End Sub
分享
文章分類
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問