Вместо создания копии объекта вы можете создать ссылку на объект. Ссылка занимает в памяти меньше места, чем дополнительный объект, может быть легко передана между процедурами, и может быть полезной при написании общего кода.
Возвращение ссылки на объект
Иногда вы можете управлять объектом посредством одной или более ссылок на объект. Например, приведенная ниже программа описывает класс, создает объект на его основе и возвращает ссылку на этот объект:
![]() | |
---|---|
*--NEWINV.PRG *--возвращает ссылку на новую форму инвойса. frmInv = CREATEOBJECT("InvoiceForm") RETURN frmInv DEFINE CLASS InvoiceForm AS FORM ADD OBJECT txtCompany AS TEXTBOX * код для установки свойств, ввода других объектов и томк подобного ENDDEFINE |
Приведенная ниже программа устанавливает ссылку на объект, созданный в Newinv.prg. Переменная ссылки может быть столь же управляемой и в той же самой степени, что и объект:
![]() | |
---|---|
frmInvoice = NewInv() && сохраняет объекьную ссылку в переменной frmInvoice.SHOW |
Кроме того, вы можете создать ссылку на объект на форме, как это показано на примере ниже:
![]() | |
---|---|
txtCustName = frmInvoice.txtCompany txtCustName.Value = "Fox User" |
![]() |
---|
После того, как вы создали объекь, вы можете использовать команду DISPLAY OBJECTS, для отображения иерархии класса, установок свойств, содержащихся объектов и доступных методов и событий. Вы можете заполнить массив свойствами (не установками свойств, а именами свойств) событиями, методами и содержащимися внутри объекта другими объектами в помощью функции AMEMBERS(). |
Высвобождение объектов и ссылок из памяти
Если существует ссылка на объект, высвобождение объекта не удаляет объект из памяти. Например, приведенная ниже команда освобождает frmInvoice
, оригинальный объект:
![]() | |
---|---|
RELEASE frmInvoice |
Однако, поскольку ссылка на объект, принадлежащий frmInvoice
продолжает существовать, объект не удаляется из памяти до тех пор, пока txtCustName
не будет высвобожден приведенной ниже командой:
![]() | |
---|---|
RELEASE txtCustName |
Проверка существования объекта
Вы можете использовать функции TYPE( ), ISNULL( ) и VARTYPE( ) для проверки существования объекта. Например, приведенные ниже строки кода проверяют - существует ли объект с именем oConnection
:
![]() | |
---|---|
IF TYPE("oConnection") = "O" AND NOT ISNULL(oConnection) * объект существует ELSE * объект не существует ENDIF |
![]() |
---|
ISNULL() является необходимой, так как .NULL. сохраняется в переменной объекта формы, когда ползователь закрывает форму, но тип переменной остается типом "объект" - "O". |
Смотрите также
Справочное руководство
Массивы объектов и членовКоманда DISPLAY OBJECTS
Функция AMEMBERS()