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