Вы можете создавать массивы, содержащие объекты, а также массивы, являющиеся членами класса.
Массивы
объектов
Вы можете создать массив, который содержит объекты. При создании массива, содержащего объекты, имейте ввиду следующие соображения:
-
Вы не можете присвоить индивидуальный объект все элементам в массиве использованием одной команды. Вы должны присвоить объект каждому элементу массива индивидуально.
-
Вы не можете присвоить значение свойства целому массиву.
Например, приведенная ниже команда приведет к ошибке:
Скопировать
кодMyArray.Enabled = .F.
-
Когда вы изменяете размер массива с целью увеличения его размера, то новые элементы массива инициализируются в значения (.F.), как и со всеми массивами в Visual FoxPro. Когда вы изменяете размер массива с целью уменьшения его размера, объекты с индексом большим, чем новый максимальный индекс, высвобождаются.
Например, приведенный ниже код создает массив с именем MyArray,
который хранит объекты командных кнопок, используя структуру цикда:
Скопировать
код | |
|---|---|
DIMENSION MyArray[5]
FOR x = 1 TO 5
MyArray[x] = CREATEOBJECT("CommandButton")
ENDFOR | |
Массив,
в качестве
члена класса
Вы можете включить массивы в качестве членов класса, для хранения в них объектов.
Приведенный ниже пример создает форму, которая содержит объект, созданный из
пользовательского класса на базе класса Container, ButtonList. Класс ButtonList
содержит члена, который представляет собой массив с именем aChoices,
в котором каждый элемент содержит объекты разных элементов управления.
Когда вы запустите пример из файла программы (.prg), то появится форма с
двумя командными кнопками и чек-боксом. Когда пользователь щелкнет по командной
кнопке или установит метку в чек-боксе формы, Visual FoxPro перешлет номер
элемента массива, который содержит объект элемента управления событию
Click посредством параметра tnIndex. Команда структуры DO CASE
отобразит окно с номер элемента.
Различие в коде зависит от того, какая кнопка была нажата.
Скопировать
код | |
|---|---|
loForm = CREATEOBJECT("Form")
loForm.AddObject("cntButtons", "ButtonList")
loForm.cntButtons.SetAll("Visible", .T.)
loForm.cntButtons.Visible = .T.
loForm.Show(1)
DEFINE CLASS ButtonList AS Container
Height = 100
Width = 130
BorderWidth = 0
DIMENSION aChoices[3]
ADD OBJECT aChoices[1] AS CommandButton WITH ;
Top = 10, ;
Height = 20, ;
Left = 10, ;
Caption = "Element One"
ADD OBJECT aChoices[2] AS CommandButton WITH ;
Top = 40, ;
Left = 10, ;
Height = 20, ;
Caption = "Element Two"
ADD OBJECT aChoices[3] AS CheckBox WITH ;
Top = 70, ;
Left = 10, ;
Caption = "Element Three"
PROCEDURE aChoices.Click
LPARAMETER tnIndex
DO CASE
CASE tnIndex = 1
WAIT WINDOW "1"
CASE tnIndex = 2
WAIT WINDOW "2"
CASE tnIndex = 3
WAIT WINDOW "3"
ENDCASE
ENDPROC
ENDDEFINE | |
Смотрите
также
Справочное руководство
МассивыДобавление объектов в класс контейнера
Концепции
Объекты в Visual FoxProПрочие ресурсы
Работа с объектами в Visual FoxPro
© Microsoft Corporation. All rights reserved.
Перевод выполнен JS.