Создание элементов формы

Теперь нам надо написать программу, которая создаст управляющие элементы, т.е. метки, кнопки и список формы, восстанавливая их из таблицы базы данных, например, «Калькулятор-форма». Этот метод необходимо изучить потому, что таким образом  можно легко восстановить любой шаблон формы и в дальнейшем модифицировать его.

 

Public Function funRestoreFormControls(frm As Form) As Boolean

Dim ctl As Control, rst As Recordset, dbs As Database, i As Integer

    On Error GoTo 999 'Переход по ошибке

    funRestoreFormControls = False 'Возврат значения по ошибке

   

    Set dbs = CurrentDb 'Выбираем текущую базу данных

    Set rst = dbs.OpenRecordset("SELECT * FROM [Калькулятор-форма]")

    If rst.RecordCount = 0 Then  'Проверяем запрос

        rst.Close 'Закрываем запрос

        Exit Function  'Выходим из программы

    End If

   

    With rst 'Создание элемента из запроса

        .MoveLast 'Заполняем запрос данными

        .MoveFirst 'Переходим на 1 запись

        For i = 0 To .RecordCount - 1 'Выполняем восстановление для каждой записи

            Select Case rst!ControlType

                Case acCommandButton 'Создаем Кнопку

                    Set ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", "", rst!Left, rst!Top, rst!Width, rst!Height)

                    ctl.OnClick = "[Event Procedure]" 'Включаем обработку нажатия

                    ctl.Caption = rst!Caption 'Меняем название

                    ctl.ControlTipText = rst!ControlTipText 'Устанавливаем подсказку

                Case acLabel 'Создаем Надпись

                    Set ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", rst!Caption, rst!Left, rst!Top, rst!Width, rst!Height)

                    ctl.BackColor = !BackColor 'Меняем фон

                Case acTextBox 'Создаем Поле

                    Set ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", "", rst!Left, rst!Top, rst!Width, rst!Height)

                    ctl.SpecialEffect = 0 'Выбираем стандартное выделение

                    ctl.BorderColor = 0 'Выбираем черный цвет

                    ctl.BorderStyle = 1 'Выбираем обычную границу

                Case acListBox 'Создаем Список

                     Set ctl = appAccess.CreateControl(frm.Name, rst!ControlType, , "", "", rst!Left, rst!Top, rst!Width, rst!Height)

                     ctl.SpecialEffect = 0 'Выбираем стандартное выделение

                     ctl.BackColor = rst!BackColor 'Меняем фон списка

                     ctl.BorderColor = 0 'Выбираем стандартное выделение

                     ctl.ColumnCount = 2 'Устанавливаем число колонок

                     ctl.ColumnWidths = "7,932 см;1 см" 'Устанавливаем размер колонок

                     ctl.RowSource = "запросСписокКалькулятора" 'Выбираем запрос для списка

                End Select

            ctl.Name = rst!Name 'Изменяем имя элемента

            ctl.ForeColor = !ForeColor 'Изменяем цвет символов

            rst.MoveNext 'Переходим на следующую запись

        Next i

    End With

    rst.Close 'Закрываем запрос

   

    funRestoreFormControls = True 'Возвращаем результат

    Exit Function 'Выходим из программы

999:

    MsgBox Err.Description 'Сообщаем об ошибке

    Err.Clear 'Очищаем поток от ошибок

End Function


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=10165