Указывает источник значений для элементов управления ComboBox и ListBox.
Замечание |
---|
Свойство RowSourceType определяет источник, который вы можете устнановить для свойства RowSource. Рекомендуется установить свойство RowSourceType до установки свойства RowSource. Для получения более подробной информации смотрите описание свойства RowSourceType. |
Control.RowSource [= cValue] |
Возвращаемое значение
- cValue
-
Определяет источник для значений, отображаемых в элементе управления.
Замечание Когда вы устанавливаете значение для свойства RowSource програмнным способом, вы должны взять это значение в кавычки ("").
В приведенной ниже таблице перечислены возможные значения для cValue.
cValue Описание Nothing
Элемент управления заполняется в run time с помощью методов AddItem или AddListItem или с помощью свойств List или ListItem. (По умолчанию)
Для получения более подробной информации смотрите описания Метод AddItem, Метод AddListItem Method, Свойство List и Свойство ListItem.
Val1,Val2,Val3,...
A comma-delimited list of values.
Элемент управления заполняется значениями из разделенного запятыми списка значений.
TableAlias
Псевдоимя открытой таблицы.
Элемент управления заполняется значениями из полей таблицы.
SQLSELECTStatement
Предложение SQL SELECT, которое создает курсор или таблицу, например, "SELECT * FROM Table".
Элемент управления заполняется значениями из колонок курсора или таблицы, созданной предложнием SQL.
Замечание При исполнении предложения SQL SELECT появляется окно просмотра (browse).
MyQueryFile.qpr
Имя файла запроса (.qpr).
Замечание Убедитесь, что вы указали расширение имени файла .qpr. При исполнении запроса появляется окно просмотра (browse).
Элемент управления заполняется значениями из колонок результата запроса.
myArray
Имя массива.
Элемент управления заполняется значениями из массива.
TableAlias.Field1, Field2, Field3, ...
Разделенный запятыми список полкй из одной открытой таблицы, который может быть предварен псевдоименем таблицы и разделяющей его и список точой.
Элемент управления заполняется значениями из полей. Свойство ColumnCount должно соответствовать числе указанных полей.
*.fileExt
Шаблон файла (например, "*.dbf" or "*.txt") или маска.
Элемент управления заполняется именами файлов из текущего каталога наряду с опциями, позволяющими выбрать другой диск или каталог, содержащий файлы.
TableName or TableAlias
Имя или псевдоимя таблицы.
Элемент управления заполняется именами полей из таблицы.
Замечание Когда свойство RowSourceType установлено в значение, равное8, а его свойство RowSource не заполнено, то элемент управления заполняется именами полей из текущей открытой таблицы. В противном случае, если свойство RowSource указывает имя таблицы, псевдоимя таблицы или имя базы данных, элемент управления заполняется именами полей из указанного источника.
MenuName
Имя меню. Вклчюено для совместимости назад.
CollectionName [, CollectionMemberProp [, CollectionMemberProp2 [, ...]]]
CollectionName указывает строку, содержащую выражение, которое оценивается в объект коллекции Visual FoxPro или коллекцию COM объекта.
Вы можете, кроме того, указать свойства объектов в коллекции. Элемент управления заполняется значениями свойства, указанными наряду с другими членами коллекции, которые не являются объектами.
Замечание Когда вы указываете коллекцию и свойства объектов в коллекции в качестве значения свойства RowSource, значения каждого свойства отображаются в отдельной колонке. Члены коллекции, которые не являются объектами, отображаются в первой колонке.
Замечание Если вы не указали никаких свойств для RowSource, то элемент управления отображает других членов коллекции, которые не являются объектами и строку "(Object)" для каждого объекта коллекции в одной колонке. Строка "(Object)" возвращается для свойства Value. Для получения более подробной информации смотрите описание свойства Value.
Примечания
Применяется к: ComboBox | ListBox
Вы можете отображать в элементе управления множество колонок соответствующей установкой свойства ColumnCount. Значения, которые вы укажете для RowSource заполнят элемент управления по строкам и колонкам в соответствии со значением свойства ColumnCount. Например, вы можете отобразить значения во множестве колонок путем установки свойства RowSourceType в 1 (Value) и указать значения, разделенные запятыми, для каждой колонки и строки для свойства RowSource так, как это показано в приведенной ниже примере:
Скопировать код | |
---|---|
myListBox.ColumnCount = 2 myListBox.RowSource = "Col1Row1,Col2Row1,Col1Row2,Col2Row2,Col2Row3" |
В этом примере, не указано значение между значением 2 строки 2-й колонки и значением для третьей строки второй колонки, поэтому не отображается значение в первой колонке третьей строки.
Примечание переводчика. Это не соответствует действительности. При проверке указанного примера вы получите результат, показанный на картике внизу:
Объяснение этому очень простое. Если мы указывает тип источника данных = Value, а в качестве источника данных для строки укажем разделенный запятыми список значений, то значения будут заполнять списочную часть элемента управления в следующем порядке: колонки первой строки, колонки второй строки и так далее.
Для указания псевдоимени таблицы, содержащей колонки, используйте приведенный ниже синтаксис:
Скопировать код | |
---|---|
myListBox.RowSource = Alias.Col1Row1,Col2Row1,Col1Row2,Col2Row2,Col2Row3 |
Примечание переводчика. Данный синтаксис абсурден, если рассматриривать его формально. Мы не можем указать конкретных значений для конкретных строк и колонок. Это вожможно только для колонок! Если же пример приводился в качестве примера использования псевдоимени для значения свойства RowSourceType=1 (Value) то в первой колонке первой строки будет указано значение Alias.Col1Row1. Такой синтаксис применим к значению свойства RowSourceType=2 (Alias) и должен выглядет так:
Скопировать код | |
---|---|
myListBox.RowSource = Alias.Field_name_for_Col1,Field_name_for_Col2 && для использования со значением ColumnCount=2 |
Замечание |
---|
Когда свойство ColumnCount установлено в значение 0 или 1, элемент управления отображает первый предмет или значегние только в единственной колонке. В противном случае, элемент управления отображает каждый предмет или значение поколоночно в соответствии с числом колонок, указанном в свойстве ColumnCount. Вам может быть придется правильно установить свойство ColumnWidths для установки ширины колонок с тем, чтобы значения отображались корректно. |
Для получения более подробной информации смотрите описание свойства ColumnCount, задачи Как: создать многоколоночные ListBox'ы и образец Отображение множества колонок в List Box.
Поскольку значением по умолчанию свойства Value является число, вам придется установить значение свойства Value в пустую строку, для отражения символьной строки текста выбранного предмета в listbox или combobox. Для ввода пустой строки в окне Properties, нажмите последовательно клавиши SPACEBAR и BACKSPACE. Для получения более подробной информации смотрите описания свойства Value и окна Properties.
Пример
Пример 1
Приведенный ниже пример creates a list box on a form and specifies an array as the source of the items in the list box. The RowSourceType property is set to 5 (Array) to specify that an array is the source for the items in the list box, and the name of the array is specified by the RowSource property. The MultiSelect property for the list box is set to True (.T.) so that you can make multiple selections from the list box.
ШагиЮ производимые в этом примере:
-
Очищается главное окно Visual FoxPro с помощью команды CLEAR.
-
Создается массив с именем gaMyListArray с помощью команды DIMENSION.
-
Массив заполняется буквами с помощью команд FOR...ENDFOR и STORE.
-
Создается форма с помощью функции CREATEOBJECT( ).
-
Блокируется кнопка Close на зеголовке формы с помощью установки свойства Closable.
-
Форма перемещается с помощью метода Move.
-
С помощью вызова метода AddObject добавляется элемент управления CommandButton, основанный на пользовательском классе cmdMyCmdButton
-
С помощью вызова метода AddObject добавляется элемент управления ListBox, основанный на пользовательском классе lstMyListBox.
-
В качестве типа источника данных для элемента управления listbox определяется массив, через установку свойства RowSourceType.
-
В качестве источника данных для строки задается массив с именем gaMyListArray через установку свойства RowSource.
-
Команда кнопка делается видимой с помощью установки свойства Visible.
-
Listbox делается видимым с помощью установки свойства Visible.
-
Форма отображается на экране с помощью ее метода Show.
-
Начинается обработка события вызовом команды READ EVENTS.
-
С помощью команды DEFINE CLASS определяется пользовательский класс cmdMyCmdButton, основанный на элементе управления CommandButton. Код в команде DEFINE CLASS установливает свойства пользовательского класса и определяет процедуры.
-
С помощью команды DEFINE CLASS определяется пользовательский класс lstMyListBox, основанный на элементе управления ListBox. Код в команде DEFINE CLASS установливает свойства пользовательского класса и определяет процедуры.
Скопировать код | |
---|---|
CLEAR DIMENSION gaMyListArray(10) FOR gnCount = 1 to 10 STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount) NEXT frmMyForm = CREATEOBJECT('Form') frmMyForm.Closable = .F. frmMyForm.Move(150,10) frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn') frmMyForm.AddObject('lstListBox1','lstMyListBox') frmMyForm.lstListBox1.RowSourceType = 5 frmMyForm.lstListBox1.RowSource = 'gaMyListArray' frmMyForm.cmbCommand1.Visible =.T. frmMyForm.lstListBox1.Visible =.T. frmMyForm.Show READ EVENTS DEFINE CLASS cmdMyCmdBtn AS CommandButton Caption = '\<Quit' Cancel = .T. Left = 125 Top = 210 Height = 25 PROCEDURE Click CLEAR EVENTS CLEAR ENDDEFINE DEFINE CLASS lstMyListBox AS ListBox Left = 10 Top = 10 MultiSelect = .T. PROCEDURE Click ACTIVATE SCREEN CLEAR ? "Selected items:" ? "---------------" FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount IF ThisForm.lstListBox1.Selected(nCnt) ? SPACE(5) + ThisForm.lstListBox1.List(nCnt) ENDIF ENDFOR ENDDEFINE |
Пример 2
Приведенный ниже пример объясняет, как в качестве источника данных использовать коллекции, через соответствующую установку свойства RowSource для элемента управления listbox. Предположим, что вы создали коллекцию, на которую указывает объектная ссылка в виде переменной памяти CustomerCol, с помощью приведенных ниже шагов:
-
Вызывается команда SCAN...ENDSCAN на таблице Customers базы даннных Northwind, расположенной в каталоге ...\Samples\Northwind directory.
-
Для каждой записи вызывается SCATTER...NAME.
-
Объект, создаванный командой SCATTER добавляется в коллекцию.
Вы можете указать коллекцию посредством переменной памяти oCustomerCol и поля записи для свойства RowSource так, как показано ниже:
Скопировать код | |
---|---|
lstmyListBox.RowSource = "colCustomerCol, CustID, Company, LastName" |
Для изучения других примеров смотрите описание задачи Как: выбрать тип данных для элементов управления ListBox или ComboBox.
Смотрите также
Задачи
Как: позволить пользователям добавлять предметы в ListBoxКак: отображать дочерние записи в списке
Как: заполнять результатами запросов элементы управления формы
Как: обновить One-to-Many отображения, основанные на значеняих в Value ListBox'а