Visual FoxPro поддерживает методы Access и Assign, которые представляют собой пользовательские процедуру и функции, имеющие те же имена, что и имя свойства, с которым они ассоциированы, но дополненные суффиксами _ACCESS или _ASSIGN. Вы можете использовать методы Access и Assign для исполнения процедурного кода когда запрашивается значение свойства или когда производится попытка присвоения нового значения свойству. Visual FoxPro исполняет методы Access и Assign только при запросах значения свойства или изменения значения свойства в run time, но не в design time. Вы можете создать методы Access и Assign отдельно и независимо друг от друга.
Методы Access и Assign дают приведенные ниже преимущества:
-
Вы можете создать открытый интерфейс для класса или объекта, который отделяет интерфейс от реализации.
-
вы можете легко реализовать проверку истинности значения свойства.
-
Вы можете легко защитить свойства в субклассированных ActiveX элементах.
Visual FoxPro исполняет код в методк Access, когда запрашивается значение свойства, обычно при использовании свойства в ссылке объекта, сохранения значения свойства в переменную памяти или отображении значения свойства с командой "знак вопроса" (?).
Visual FoxPro исполняет код в методе Assign когда вы пытаетесь изменить значение свойства, обычно с помощью команды STORE или оператора привоения (=) для сохранения нового значения свойства.
![]() |
---|
Вы можете создать методы Access и Assign для большинства родных свойств Visual FoxPro. Вы можете создать методы Assign для свойств, у которых установлен аттрибут "только для чтения", однако, в этом случае метод никогда не будет исполнен. Visual FoxPro не поддерживает метод Assign для значения свойства Value для управляющих элементов, а также не поддерживает методы Access и Assign для родных свойств, событий или методов элементов ActiveX. Однако, Visual FoxPro поддерживает методы Access и Assign для свойств, событий и методов для Visual FoxPro OLE Container в котором содержится элемент ActiveX. |
![]() |
---|
Методы Access и Assign для членов массива не срабатывают, когда обращение к массиву производится в помощью функции, такой как ASCAN(). |
![]() |
---|
Метод 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, кроме того, должен включать параметр для приема имени члена объекта, который изменяется или опрашивается.
![]() |
---|
THIS_ACCESS не предназначен в качестве глобальной замены методов Access и Assign. Он только предоставляет информацию о членах объекта, к которому обращаются или который опрашивается. В отличие от методов Access и Assign, метод THIS_ACCESS не предоставляет управления над значениями, возвращаемые конкретными членами объекта. |