Вместо создания копии объекта вы можете создать ссылку на объект. Ссылка занимает в памяти меньше места, чем дополнительный объект, может быть легко передана между процедурами, и может быть полезной при написании общего кода.
Возвращение ссылки на объект
Иногда вы можете управлять объектом посредством одной или более ссылок на объект. Например, приведенная ниже программа описывает класс, создает объект на его основе и возвращает ссылку на этот объект:
Скопировать код | |
---|---|
*--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()