Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые / Компоненты выбора из списков.doc
Скачиваний:
31
Добавлен:
10.05.2015
Размер:
1.68 Mб
Скачать

ValueListEditor

Рассмотрим пример с использованием компонента ValueListEditor. Представьте себе массив, элементами которого являются строки, но обращение к элементам осуществляется не с помощью их номеров, а с помощью имен. В качестве примера можно привести таблицу, в которой есть заголовки строк и содержащаяся в них информация в виде переменной типаString. Заголовки строк в таких массивах называются ключами. К строке такой таблицы можно обращаться по ключу, а уже потом анализировать хранящуюся в строке информацию. Для работы с подобного рода массивами предназначен компонентValueListEditor

ValueListEditorэто окно редактирования списка строк вида «ключ»=«значение». Окно имеет две колонки с заголовками «Key» для имен и «Value» для значений. Заголовки можно изменить во время проектирования или программно, используя свойствоTitleCaptions типаTStrings. Первая строка этого свойства соответствует первой колонке (именам), вторая — второй колонке.

Заменим имена колонок на «Шифр» и «ФИО»

Свойство Strings типаTStrings содержит список всех строк. Во время проектирования он может быть заполнен редактором строк, вызываемым из Инспектора Объектов. Для этого нужно выбрать свойствоStringsи в новом окне щелкнуть по кнопкеCode Editor. В открывшемся редактора внести список вида «ключ»=«значение». После завершения работы над списком щелкнуть по нему правой кнопкой мыши, и в контекстном меню выбратьClose Page.

Затем в появившемся сообщении выбрать Yes.

В итоге в окне ValueListEditorпоявится созданный список.

Во время выполнения пользователь может заполнять список, если в компоненте разрешено редактирование. Для этого используется свойство KeyOptions, которое определяет операции, доступные пользователю для редактирования колонки имен перевести. Это свойство является множеством,состоящим из элементов(подсвойства) keyEdit, keyAdd, keyDelete, keyUnique (значения всех подсвойств по умолчанию равныfalse).

keyEdit

Позволяет редактировать имена в первой колонке.

keyAdd

Позволяет добавлять в список новые строки, используя клавишуInsert или перемещая курсор клавишей со стрелкой ниже позиции последней строки.ЭлементkeyAdd можно включать только вместе сkeyEdit.

keyDelete

Позволяет удалять выделенную строку клавишей Delete.

keyUnique

Не позволяет добавить новую строку с именем, уже имеющимся в списке.

Все строки присваиваемого списка должны иметь вид «ключ»=«значение». Тогда содержимое списка отобразится в колонках компонента.

Свойство Keys является индексированным списком. Индексы начинаются с0. СвойствоAnsiString Values[const AnsiString Key] позволяет задать или прочитать значение из строки с именемKey. Если свойство используется для задания значения, а имениKeyв списке нет, то в список добавляется новая строка с указанным именем и значением. Если свойство используется для чтения, а имениKeyв списке нет, то возвращается пустая строка.

Доступ к именам и значениям дают также свойства Strings—>Names и

Strings—>Values (как в обычных списках типаTStrings).

Еще один способ доступа к элементам строк дает свойство AnsiString Cells[int ACol][int ARow]. В этом свойствеACol=0соответствует колонке ключей, aACol=1-колонке значений.ARow=0соответствует строке заголовков, aARow>0- строкам списка.

В конструкторе формы разместите код

RichEdit1->Clear();

RichEdit1->Paragraph->Alignment=taCenter; /* выравнивание по центру */

RichEdit1->SelAttributes->Style=

RichEdit1->SelAttributes->Style<<fsBold;

RichEdit1->Lines->Add("Экзаменационная ведомость");

RichEdit1->Lines->Add("");

RichEdit1->Paragraph->Alignment=taLeftJustify;

В обработчике кнопки поместите код

for(int i=1; i<ValueListEditor1->Strings->Count; i++)

if(ValueListEditor1->Strings->Names[i]==Edit1->Text)

RichEdit1->Lines->Add(ValueListEditor1->Strings->Values[Edit1->Text]);

Таблица строк — компонент StringGrid

Компонент StringGrid (вкладка Addition) представляет собой таблицу, содержащую строки. Данные таблицы могут быть только для чтения или редактируемыми. Таблица может иметь полосы прокрутки, причем заданное число первых строк и столбцов может быть фиксированным и не прокручиваться. Таким образом, можно задать заголовки столбцов и строк, постоянно присутствующие в окне компонента. Каждой ячейке таблицы может быть поставлен в соответствие некоторый объект.

Компонент StringGrid предназначен в первую очередь для отображения таблиц текстовой информации, хотя может содержать графическую информацию

Основные свойства компонента, определяющие отображаемый текст:

System:: AnsiString Cells[int ACol][int ARow]

Строка, содержащаяся в ячейке с индексами столбца и строки ACol и ARow

Classes::TStrings* Cols[int Index]

Список строк и связанных с ними объектов содержащихся в столбце с индексом Index

Classes-TStrings* Rows [int Index]

Список строк и связанных с ними объектов содержащихся в строке с индексом Index

System::TObject* Objects [int ACol][int ARow]

Объект, связанный со строкой, содержащейся в ячейке с индексами столбца и строки ACol и ARow

Все эти свойства доступны во время выполнения. Задавать тексты можно программно или по отдельным ячейкам, или сразу по столбцам и строкам с помощью методов класса TStrings .

Рассмотрим пример. Создайте форму, расположите в ней компоненты BitBtn, StringGrid (вкладка Additional)

UpDown (вкладка Win32) и Edit (вкладка Стандарт).

Расположите их как показано на рисунке

Обработчик BitBtn выглядит так