Visual FoxPro поддерживает методы Access и Assign, которые представляют собой пользовательские процедуру и функции, имеющие те же имена, что и имя свойства, с которым они ассоциированы, но дополненные суффиксами _ACCESS или _ASSIGN. Вы можете использовать методы Access и Assign для исполнения процедурного кода когда запрашивается значение свойства или когда производится попытка присвоения нового значения свойству. Visual FoxPro исполняет методы Access и Assign только при запросах значения свойства или изменения значения свойства в run time, но не в design time. Вы можете создать методы Access и Assign отдельно и независимо друг от друга.

Методы Access и Assign дают приведенные ниже преимущества:

Visual FoxPro исполняет код в методк Access, когда запрашивается значение свойства, обычно при использовании свойства в ссылке объекта, сохранения значения свойства в переменную памяти или отображении значения свойства с командой "знак вопроса" (?).

Visual FoxPro исполняет код в методе Assign когда вы пытаетесь изменить значение свойства, обычно с помощью команды STORE или оператора привоения (=) для сохранения нового значения свойства.

NoteЗамечание

Вы можете создать методы Access и Assign для большинства родных свойств Visual FoxPro. Вы можете создать методы Assign для свойств, у которых установлен аттрибут "только для чтения", однако, в этом случае метод никогда не будет исполнен. Visual FoxPro не поддерживает метод Assign для значения свойства Value для управляющих элементов,  а также не поддерживает методы Access и Assign для родных свойств, событий или методов элементов ActiveX. Однако, Visual FoxPro поддерживает методы Access и Assign для свойств, событий  и методов для Visual FoxPro OLE Container в котором содержится элемент ActiveX.

NoteЗамечание

Методы Access и Assign для членов массива не срабатывают, когда обращение к массиву производится в помощью функции, такой как ASCAN().

NoteЗамечание

Метод Assign сработает для определенных родных свойств, когда их значения опрашиваются, но не изменяются. Эти свойства включают в себя свойства размеров, такие как Top, Left, Height, Width а также и некоторые другие, такие как Visible. Этот связано с тем, как Visual FoxPro внутренне обрабатывает эти свойства.

Visual FoxPro интерпретирует методы Access и Assign в run time, как Protected,  так что к ним нельзя обратиться извне определения класса. Однако, когда вы находитесь в дизайнере класса, Visual FoxPro интерпретирует эти методы Access и Assign особым образом. Когда вы бросаете объект на контейнер, например,  командную кнопку на форму, Visual FoxPro обычно метит защищенные методы такого объекта как "read-only" и не модифицируемыми в дизайнере. Однако вы вы можете редактировать методы Access и Assign такого объекта в дизайнере классов.

Методы THIS_ACCESS

Вы можете создать методы THIS_ACCESS для исполнения кода, когда изменяется значение для члена объекта или опросе члена объекта. Метод THIS_ACCESS должен всегда возвразать объектную ссылку; в противном случае Visual FoxPro сгенерирует ошибку. Обычно, метод возвращает объектную ссылку THIS. Метод THIS_ACCESS, кроме того, должен включать параметр для приема имени члена объекта, который изменяется или опрашивается.

NoteЗамечание

THIS_ACCESS не предназначен в качестве глобальной замены методов Access и Assign. Он только предоставляет информацию о членах объекта, к которому обращаются или который опрашивается. В отличие от методов Access и Assign, метод THIS_ACCESS не предоставляет управления над значениями, возвращаемые конкретными членами объекта.

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