Вы можете иметь множество экземпляров определений классов активных одновременно. Например, вы можете разработать одну форму заказа, но иметь несколько открытых форм в вашем приложении. Каждая будет использовать одно и тоже определение, но отображаться и управляться индивидуально.
Когда у вас есть множество экземпляров форм, вам нужно помнить, что нужно:
-
создать свойство типа "массив" в запускающей форме для хранения объектных переменных, связанных с каждым экземпляром множества форм. В тоже время это простейший способ сделать держать их под контролем в любое время и независимо от их количества.
-
для формы, которая будет запущена множество раз, установите свойство DataSession в значение 2 – Private Data Session. Частная сессия данных обеспечивает отдельный набор рабочих областей для каждого экземпляра формы, так что перемещение указателя записи в таблице одного экземпляра формы будет независимым от других экземпляров.
Пример
Приведенный ниже пример предоставляет код, которые демонстрирует создание множества экземпляров формы. В целях краткости этот не оптимизирован; он приведен только для представления концепции.
Приведенная ниже форма запускает множество экзепляров:
Объект | Свойство | Установка |
---|---|---|
frmLaunch |
aForms[1] |
|
Объект | Собюытие | Программный код |
---|---|---|
cmdQuit |
|
|
cmdLaunch |
Click |
|
Если вы будете использовать и улучшать этот пример, вы должны управлять массивом объектов форм, для того, чтобы пустые элементы массива использовались повторно для следующих экзепляров форм, вместо того, чтобы изменять его размеры и увеличивать его размер раз за разом.
Форма, которая может иметь множество экземпляров определена в файле Multi.scx. Среда данных этой формы содержит таблицу Employee.
Надписи на рисунке (слева-направо и сверху вниз)
Надпись на форме слева: Щелкните по кнопке Launch Forn для запуска другого экземпляра формы
Надпись справа от двух форм: Каждый экземпляр формы обслуживает свои данные независимо
Объект | Свойство | Установка |
---|---|---|
txtFirstname |
|
|
txtLastName |
|
|
frmMulti |
|
Когда вы щелкаете по Launch Form в форме Launcher, создается экземпляр формы Multi. Когда вы закрываете форму Launcher, свойство-массив aForms уничтожается и все экземпляры Multi также уничтожаются.
Visual FoxPro обеспечивает некоторые функции и свойства, которые помогают вам управлять множеством экземпляров объектов. Для получения более подробной информации смотрите описания Функция AINSTANCE(), Функция AUSED() и Свойство DataSessionID.
Смотрите также
Задачи
Как: сохранить форму в формате HTMLКак: установить площадь дизайна для формы
Как: создавать формы с локальными и удаленными данными
Справочное руководство
Свойство DataSessionПрочие ресурсы
Работа с формамиСоздание форм