Вы можете иметь множество экземпляров определений классов активных одновременно. Например, вы можете разработать одну форму заказа, но иметь несколько открытых форм в вашем приложении. Каждая будет использовать одно и тоже определение, но отображаться и управляться индивидуально.

Когда у вас есть множество экземпляров форм, вам нужно помнить, что нужно:

Пример

Приведенный ниже пример предоставляет код, которые демонстрирует создание множества экземпляров формы. В целях краткости этот не оптимизирован; он приведен только для представления концепции.

Приведенная ниже форма запускает множество экзепляров:

Установка свойств для Launch.scx
Объект Свойство Установка

frmLaunch

aForms[1]

" "

Код события для Launch.scx
Объект Собюытие Программный код

cmdQuit

Click

RELEASE THISFORM

cmdLaunch

Click

nInstance = ALEN(THISFORM.aForms)

DO FORM Multi ;

NAME THISFORM.aForms[nInstance] ;

LINKED

DIMENSION ;

THISFORM.aForms[nInstance + 1]

Если вы будете использовать и улучшать этот пример, вы должны управлять массивом объектов форм, для того, чтобы пустые элементы массива использовались повторно для следующих экзепляров форм, вместо того, чтобы изменять его размеры и увеличивать его размер раз за разом.

Форма, которая может иметь множество экземпляров определена в файле Multi.scx. Среда данных этой формы содержит таблицу Employee.

Множество экземпляров Multi.scx
FoxPro Launch Form Multiples

Надписи на рисунке (слева-направо и сверху вниз)
Надпись на форме слева: Щелкните по кнопке Launch Forn для запуска другого экземпляра формы
Надпись справа от двух форм: Каждый экземпляр формы обслуживает свои данные независимо

Установки свойств для Multi.scx
Объект Свойство Установка

txtFirstname

ControlSource

Employee.first_name

txtLastName

ControlSource

Employee.last_name

frmMulti

DataSession

2 - Private Data Session

Когда вы щелкаете по Launch Form в форме Launcher, создается экземпляр формы Multi. Когда вы закрываете форму Launcher, свойство-массив aForms уничтожается и все экземпляры Multi также уничтожаются.

Visual FoxPro обеспечивает некоторые функции и свойства, которые помогают вам управлять множеством экземпляров объектов. Для получения более подробной информации смотрите описания Функция AINSTANCE(), Функция AUSED() и Свойство DataSessionID.

Смотрите также