Основы офисного программирования и язык VBA

       

Добавленные таким путем элементы управления



Рис. П-3.  Форма с программно добавленными элементами управления
  • Добавленные таким путем элементы управления живут в форме только до ее закрытия. Но, заметьте, если скрыть форму, вызвав метод Hide, то при повторном ее открытии элементы управления сохраняются.
  • Перейдем теперь непосредственно к ответу на первый поставленный вопрос. Для его решения потребуются средства, ранее не упоминавшиеся в книге. Нам понадобятся объекты класса VBComponent - компоненты VB-проекта (объекта класса VBProject). Чтобы можно было с ними работать, необходимо включить дополнительную ссылку на библиотеку VBIDE (Visual Basic Extensibility). Ну, а теперь отвечаю конкретно на первый поставленный вопрос. Можно программно добавить элементы управления так, чтобы они сохранялись в форме точно также как сохраняются элементы, созданные в период проектирования. Для этого нужно работать с объектом, представляющим форму в режиме проектирования, используя свойство Designer объекта VBComponent. Вот как это делается:

  • Public Sub AddDesignControls() 'Эта процедура добавляет командную кнопку и окно редактирования в форму Dim MyForm As UserForm 'Создаем форму этапа проектирования
    Set MyForm = ActiveDocument.VBProject.VBComponents("UserForm1").Designer With MyForm
    'Добавляем окно редактирования Set Mycmd = .Controls.Add("Forms.TextBox.1", "ProgramBox", True) Mycmd.Left = .TextBox1.Left Mycmd.Top = .TextBox1.Top + 100 Mycmd.Width = .TextBox1.Width Mycmd.Height = .TextBox1.Height Mycmd.Text = "New Control - " & Mycmd.Name
    'Добавляем командную кнопку Set Mycmd = .Controls.Add("Forms.CommandButton.1", "ProgramButton", True) Mycmd.Left = .CommandButton1.Left Mycmd.Top = .CommandButton1.Top + 100 Mycmd.Width = .CommandButton1.Width Mycmd.Height = .CommandButton1.Height Mycmd.Caption = "DesignButton"
    End With
    'Удаляем командную кнопку, вызывающую эту процедуру. 'Эта кнопка может работать лишь раз, по крайней мере, 'пока в режиме проектирования не будут удалены добавленные элементы. 'Заметьте, кнопку можно только удалить, но нельзя сделать ее невидимой.

    Содержание  Назад  Вперед







    Forekc.ru
    Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий