Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикл_программир_ч1.doc
Скачиваний:
6
Добавлен:
18.09.2019
Размер:
11.05 Mб
Скачать

5.4 Компоненты выбора из списков – ListBox, CheckListBox, ComboBox

ListBox – окно списка. Этот компонент расположен на вкладке Standard библиотеки компонентов, и предназначен для отображения стандартного окна списка Windows, позволяющего пользователю выбирать из него пункты.

ComboBox – редактируемый список. Он расположен на вкладке Standard и объединяет функции компонентов ListBox и Edit. При использовании этого компонента пользователь может либо ввести текст, либо выбрать его из списка.

CheckListBox – расположен на вкладке Additional и представляет собой комбинацию компонентов ListBox и индикаторов CheckBox.

Компоненты ListBox и ComboBox изображают списки строк. Использование этих компонентов позволяет обеспечить безошибочный ввод информации пользователем в тех случаях, когда он должен выбрать ответ из конечного множества альтернатив, например, из списка товаров магазина. Компоненты списков отличаются друг от друга, прежде всего тем, что ListBox только отображает данные, а ComboBox позволяет редактировать данные. Кроме того, различается форма отображения списков. ListBox отображает список в раскрытом виде и автоматически добавляет в список полосы прокрутки, если все строки не помещаются в окне компонента. Компонент ComboBox позволяет отображать список, как в развернутом виде, так и в виде выпадающего списка. Последний вариант обычно удобнее, так как при этом экономится площадь окна приложения.

Основные свойства списков :

Items – строковый массив элементов списка для выбора.

ItemIndex – определяет номер выделенной строки пользователем. Если строка не выделена, его значение =-1. Свойство доступно, только во время выполнения программы.

Color – изменение цвета фона.

Font – изменение параметров шрифта.

Count – определяет текущее число строк списка.

Selected – выделяет указанную строку списка. Имеет логический тип и может принимать два значения True или False. Например, для выделения в списке с именем ListBox1 третьей строки необходимо записать оператор : ListBox1->Selected [2] = True ;Это свойство доступно только во время выполнения программы.

MultiSelect – разрешает пользователю множественный выбор элементов из списка, может принимать два значения true и false.

Основные методы списков :

Add() – добавить элемент в список. Например, при добавлении элемента в список с именем ListBox1 следует записать оператор вида :

ListBox1->Items-> Add(«Новый элемент списка»);

Insert() – вставка элемента в указанную позицию списка. Например, оператор :

ListBox1-> Items-> Insert(О, «Вставить данный текст в первую строку»)

вставит строку в начало списка.

Delete() – удаление строки с указанным номером. Оператор ListBox1-> Items-> Delete(1); удаляет второй элемент списка.

Clear() – очистка всего списка .Оператор ListBox1-> Clear(); полностью очищает список.

Move() - изменение текущей позиции строки на заданную. Например, для перемещения элемента списка с седьмой позиции на первую необходимо записать оператор:

L istbox 1->Items -> Move (6, 0 );

текущая заданная

позиция позиция

Разновидностью списка ListBox является список с индикаторами CheckListBox. Все свойства, характеризующие компонент CheckListBox как список, аналогичны ListBox, за исключением свойств, определяющих множественный выбор. Эти свойства компоненту CheckListBox не нужны, поскольку в нем множественный выбор можно осуществлять установкой индикаторов с флажками. Индикатор с флажком стоит у каждого элемента списка, и его состояние пользователь может изменять. Проверять состояние индикатора можно по значению свойства Checked. Если Checked = true, то индикатор выбран, если Checked = false - индикатор не выбран.

Например, оператор CheckListBox1-> Checked [1]= true;, устанавливает индикатор второй строки списка CheckListBox1 в состояние выбранного, а операторы

for ( int i = 0; i< CheckListBox1 -> Items -> Count; i++)

if (CheckListBox1 -> Checked [i])…

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

В компоненте CheckListBox имеется также событие OnСlickСheck, возникающее при каждом изменении пользователем состояния индикатора. Его можно использовать для обработки результатов изменения.

Отличительной особенностью компонента ComboBox является наличие свойства Style, которое определяет стиль изображения этого компонента и может принимать следующие основные значения:

csDropDown – выпадающий список со строками одинаковой высоты и с окном редактирования, позволяющем пользователю вводить или редактировать текст.

csSimple – развернутый список со строками одинаковой высоты и с окном редактирования, позволяющем пользователю вводить или редактировать текст.

csDropDownList – выпадающий список со строками одинаковой высоты, не содержащий окон редактирования.

csOwnerDrowVariable – выпадающий список типа csDropDown с графической прорисовкой элементов, которые могут иметь различную высоту.

Выбор пользователя или введенный им текст можно определить по значению свойства Text. Если же надо определить индекс выбранного пользователем элемента списка, то можно воспользоваться свойством ItemIndex. При запуске комбинированного поля значению свойства ItemIndex необходимо задавать начальные значения 0, 1 … .

Свойство MaxLength определяет максимальное число символов, которые пользователь может ввести в окно редактирования. При значении этого свойства = 0 число вводимых символов неограниченно.

Рассмотрим несколько приемов работы с комбинированными списками :

1.Добавление элементов в список с помощью метода Add (добавить элемент), который имеет следующий синтаксис:

Cbox 1 -> Items -> Add (“Строковое выражение”); ,

где Cbox1 – имя комбинированного списка;

Строковое выражение”- строка, которая добавляется в список Пример: CBox1 -> Items -> Add (“Вино”);

2.Удаление элементов из списка осуществляется с помощью метода Delete.

CBox1 -> Items -> Delete (index);

Пример: Удалить 2 элемент списка

CBox1 -> Items -> Delete [1];

Удаление сразу всех элементов списка осуществляется с помощью метода Clear.

Например, оператор CBox1 -> Clear ( ); полностью очищает весь список.

3.Доступ к содержимому списка может осуществляться следующими операторами:

CBox1 -> Items -> Strings [1]; // доступ к содержимому второй строки.

CBox1 -> Text; // доступ к содержимому выделенной строки.

Примеры:

Memo1 -> Text = CBox 1 -> Items -> Strings [1];

Memo1 -> Text = CBox 1 -> Text;

Первый оператор записывает в текстовое поле Memo1 содержимое второй строки CBox1, а второй оператор записывает в поле Memo1 содержимое выделенной строки.

4. Определение положения элемента осуществляется с помощью свойства ItemIndex. Оно устанавливает или возвращает индекс текущего выбранного элемента списка и доступно лишь во время выполнения. Значение этого свойства = 0, если выбран первый элемент, 1 – если второй и т.д. Например, определить номер выделенного элемента можно с помощью оператора: int i = CBox -> IntemIndex;

5.Возвращение числа элементов списка n осуществляется с помощью свойства Count при использовании оператора:

int n = CBox1 -> Items -> Count;

Примеры использования основных свойств, методов и событий списков представлены на рисунках 5.9 –5.14. На рисунке 5.9 показан внешний вид интерфейса приложения, позволяющего демонстрировать свойства и методы списка ListBox, а программный код этого приложения приведен на рисунке 5.10. Рис. 5.9 Интерфейс приложения, демонстрирующего свойства списка ListBox

В приложение включены два списка и многострочное окно редактирования . Первое из них(ListBox1) используется для ввода текста, второе (ListBox2) - для иллюстрации свойств и методов. Окно редактирования Memo1 предназначено для демонстрации операторов кода при выполнении программы . На ряду с этим на форме размещены четыре кнопки типа Button и семь радио кнопок типа RadioButton. Назначение этих компонентов и их свойства, установленные во время проектирования, поясняются в таблице 5.5.

Таблица 5.5

Компонент

Свойство

Значение

Форма

Caption

Демонстрация свойств списка ListBox

Кнопки

Caption

Ввод текста(Button1)

Caption

Ввод в цикле(Button2)

Caption

Очистка(Button3)

Caption

Выделение 2-ой строки(Button4)

Радио кнопки

Caption

Изменение цвета фона(RadioButton1)

Caption

Изменение шрифта(RadioButton2)

Caption

Вставка в 1-ю строку(RadioButton3)

Caption

Перенос 4-ой строки (RadioButton4)

Сaption

Перен.выд.стр.во 2-й спис.(RadioButton5)

Caption

Число строк в 1-ом списке (RadioButton6)

Caption

Изм.тек.позиции стр.на зад.( RadioButton7)

Метки

Caption

Список1

Caption

Список2

Списки

Name

Edit1

Name

Edit2

Окно редактиров.

Name

Memo1

Другие свойства компонентов принимаются по умолчанию.

// Программный код приложения, демонстрирующего свойства списка ListBox

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)//Ввод текста

{

ListBox1->Items->Add("Понедельник");

ListBox1->Items->Add("Вторник");

ListBox1->Items->Add("Среда");

ListBox1->Items->Add("Четверг");

ListBox1->Items->Add("Пятница");

ListBox1->Items->Add("Суббота");

ListBox1->Items->Add("Воскресенье");

Memo1->Clear(); //Очистка поля Memo1

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("ListBox1->Items->Add(Понедельник);");

Memo1->Lines->Add("ListBox1->Items->Add(Вторник); ");

Memo1->Lines->Add("ListBox1->Items->Add(Среда); ");

Memo1->Lines->Add("ListBox1->Items->Add(Четверг); ");

Memo1->Lines->Add("ListBox1->Items->Add(Пятница); ");

Memo1->Lines->Add("ListBox1->Items->Add(Суббота); ");

Memo1->Lines->Add("ListBox1->Items->Add(Воскресенье); ");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

for(int i=1;i<10;i++)//Ввод информации в цикле

{

AnsiString i1=IntToStr(i);//Преобразование строковой переменной к целочисленной

ListBox1->Items->Add("Строка номер " + i1);

}

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("for(int i=1;i<10;i++)");

Memo1->Lines->Add("{ AnsiString i1=IntToStr(i);");

Memo1->Lines->Add(" ListBox1->Items->Add(Строка номер + i1);}");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

Memo1->Clear(); //Очистка поля Memo1, списков ListBox1и ListBox2

ListBox1->Clear();

ListBox2->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("ListBox1->Clear();");

Memo1->Lines->Add("ListBox2->Clear();");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

ListBox1->Selected[1]=true;//Выделение 2-ой строки в первом списке

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add(" ListBox1->Selected[1]= true;");

// int i=ListBox1->Items->Add("Среда");

//Memo1->Lines->Add(i);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RB1Click(TObject *Sender)

{

ListBox1->Color=clAqua; //Изменение цвета фона

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("ListBox1->Color=clAqua; ");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RB2Click(TObject *Sender)

{

ListBox1->Font->Name="Times New Roman";//Изменение параметров шрифта

ListBox1->Font->Size=14;

ListBox1->Font->Color=clRed;

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("ListBox1->Font->Name=Times New Roman; ");

Memo1->Lines->Add(" ListBox1->Font->Size=14;");

Memo1->Lines->Add("ListBox1->Font->Color=clRed;");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RB3Click(TObject *Sender)

{// Вставка текста в первую строку

ListBox1->Items->Insert(0,"Вставить данный текст в первую строку");

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("ListBox1->Items->Insert(0, Вставить данный текст в первую строку);");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RB4Click(TObject *Sender)

//Перенос 4-ой строки во второй список

{

ListBox2->Items->Add(ListBox1->Items->Strings[3]);

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("ListBox2->Items->Add(ListBox1->Items->Strings[3]);");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RB5Click(TObject *Sender)

{

int i= ListBox1->ItemIndex; //Оценка номера выделенной строки

if(i>-1) //Проверка наличия выделенной строки

{

ListBox2->Items->Add(ListBox1->Items->Strings[i]);//Перенос выделенной строки

ListBox1->Items->Delete(i); //Удаление выделенной строки

}

else

ShowMessage(" Вы не выделили элемент списка" );

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("int i= ListBox1->ItemIndex;");

Memo1->Lines->Add("if(i>-1)");

Memo1->Lines->Add("{ListBox2->Items->Add(ListBox1->Items->Strings[i]);");

Memo1->Lines->Add("ListBox1->Items->Delete(i); }");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RB6Click(TObject *Sender)

{

int j=ListBox1->Items->Count ; //Определение числа строк списка

ListBox2->Items->Add(j); //Вывод значения во 2-ой список

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("int j=ListBox1->Items->Count ; ");

Memo1->Lines->Add("ListBox2->Items->Add(j);");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RB7Click(TObject *Sender)

{

//Изменение текущей позиции строки на заданную

ListBox1->Items->Move(6,0);

Memo1->Clear();

//Запись операторов программного кода в поле Memo1

Memo1->Lines->Add("ListBox1->Items->Move(6,0);");

}

//---------------------------------------------------------------------------

Рис.5.10 Программный код приложения, демонстрирующего свойства списка ListBox

В программном коде( Рис.5.10) при щелчке по кнопке Button1, будет реализован обработчик этого события, связанный со вводом строк текста в список ListBox1..При нажатии кнопки Button2, информация в первый список будет вводится в цикле. Кнопки Button3 и Button4 реализуют функции очистки обоих списков и выделения второй строки в первом списке. Операторы кода, характеризующие другие свойства и методы списков реализуются при включении радио кнопок RadioButton1 – RadioButton7. Их характеристики даны в комментариях. Операторы программного кода ,соответствующие каждому событию отображаются в окне редактирования Memo1.

Примеры использования основных свойств и методов компонента CheckListBox демонстрирует приложение ,представленное на рисунках 5.11 –5.12. На рисунке 5.11 показан внешний вид интерфейса приложения, а на рисунке 5.12. приведен программный код .

Рис. 5.11Интерфейс приложения, демонстрирующего свойства компонента CheckListBox

В приложение включены два списка и многострочное окно редактирования . Первое из них(CheckListBox1) используется для ввода текста, второе (CheckListBox2) - для иллюстрации свойств и методов. Окно редактирования Memo1 предназначено для демонстрации операторов кода при выполнении программы . На ряду с этим на форме размещены четыре кнопки типа Button, одна кнопка BitBtn и шесть радио кнопок типа RadioButton. Назначение этих компонентов и их свойства, установленные во время проектирования, поясняются в таблице 5.6.

Таблица 5.6

Компонент

Свойство

Значение

Форма

Caption

Form1

Кнопки

Caption

Размещение списка в два столбца(Button1)

Caption

Сортировка списка(Button2)

Caption

Определ. выбранных индикаторов(Button3)

Caption

Ввод цифровой информации(Button4)

Caption

Close(BitBtn)

Радио кнопки

Caption

Вставка текста в 1й список (RadioButton1)

Caption

Перенос 4й стр. во 2й сп. (RadioButton2)

Caption

Перенос выд. строки во 2й сп(RadioButton3)

Caption

Определение числа строк сп. (RadioButton4)

Сaption

Изм. текущей позиции строки RadioButton5)

Caption

2 ой элемент сп. станов. недост. (RadioButton6)

Метки

Caption

Список1

Caption

Список2

Списки

Name

CheckListBox1

Name

CheckListBox2

Окно редактиров.

Name

Memo1

Другие свойства компонентов принимаются по умолчанию.

// Программный код приложения, демонстрирующего свойства списка CheckListBox

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

//Ввод текста

void __fastcall TForm1::FormCreate(TObject *Sender)

{

CheckListBox1->Items->Add("Хлеб");

CheckListBox1->Items->Add("Мясо");

CheckListBox1->Items->Add("Рыба");

CheckListBox1->Items->Add("Вино");

CheckListBox1->Items->Add("Водка");

CheckListBox1->Items->Add("Фрукты");

CheckListBox1->Items->Add("Напитки");

CheckListBox1->Items->Add("Овощи");

CheckListBox1->ItemIndex=0;

}

//Размещение списка в 2 столбика

void __fastcall TForm1::Button1Click(TObject *Sender)

{

CheckListBox1->Columns=2;//Вставка текста в текущую строку

Memo1->Clear();

Memo1->Lines->Text=("CheckListBox1->Columns=2;");

}

//Упорядочиваем список по алфавиту

void __fastcall TForm1::Button2Click(TObject *Sender)

{

CheckListBox1->Sorted=true;//Перенос 4 ой строки во второй список

Memo1->Clear();

Memo1->Lines->Text=("CheckListBox1->Sorted=true;");

}

//Определяем выбранные индикаторы

void __fastcall TForm1::Button3Click(TObject *Sender)

{

for(int i=0; i<CheckListBox1->Items->Count;i++)

{

if(CheckListBox1->Checked[i])

{

CheckListBox2->Items->Add("Выбран " +IntToStr(i)+ " индикатор");

}

}

Memo1->Clear();

Memo1->Lines->Text=("for(int i=0; i<CheckListBox1->Items->Count;i++)");

Memo1->Lines->Text=("if(CheckListBox1->Checked[i])");

Memo1->Lines->Text=("CheckListBox2->Items->Add( Выбран +IntToStr(i)+ индикатор );");

}

//Ввод цифровой информации

void __fastcall TForm1::Button4Click(TObject *Sender)

{

for(int i=1; i<10;i++)

CheckListBox1->Items->Add("Строка номер "+IntToStr(i));

Memo1->Clear();

Memo1->Lines->Text=("for(int i=1; i<10;i++)");

Memo1->Lines->Text=("heckListBox1->Items->Add(Строка номер +IntToStr(i));");

}

//Вставляем текст в первую строку

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

CheckListBox1->Items->Insert(0,"Вставляем текст в первую строку");

Memo1->Clear();

Memo1->Lines->Text=("CheckListBox1->Items->Insert(0,Вставляем текст в первую строку);");

}

//Перенос 4й строки во второй список

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

CheckListBox2->Items->Add(CheckListBox1->Items->Strings[3]);

Memo1->Clear();

Memo1->Lines->Text=("CheckListBox2->Items->Add(CheckListBox1->Items->Strings[3]);");

}

//Перенос выделенной строки во второй список

void __fastcall TForm1::RadioButton3Click(TObject *Sender)

{

int i= CheckListBox1->ItemIndex;//определение номера выделенной строки

if(i>-1)//Проверка наличия выделенной строки

{

CheckListBox2->Items->Add(CheckListBox1->Items->Strings[i]);//Перенос выд. стр.

CheckListBox1->Items->Delete(i);//Удаление выделенной строки из первого списка

}

else

ShowMessage("Вы не выделили элемент списка");

Memo1->Clear();

Memo1->Lines->Text=("int i= CheckListBox1->ItemIndex;");

Memo1->Lines->Text=("if(i>-1)");

Memo1->Lines->Text=("CheckListBox2->Items->Add(CheckListBox1->Items->Strings[i]);");

Memo1->Lines->Text=("CheckListBox1->Items->Delete(i);");

}

//Определение числа строк списка

void __fastcall TForm1::RadioButton4Click(TObject *Sender)

{

int j=CheckListBox1->Items->Count;

CheckListBox2->Items->Add(j);//Вывод значения во второй список

Memo1->Clear();

Memo1->Lines->Text=("int j=CheckListBox1->Items->Count;");

Memo1->Lines->Text=("CheckListBox2->Items->Add(j);");

}

//Изменение текущей позиции строки на заданную

void __fastcall TForm1::RadioButton5Click(TObject *Sender)

{

CheckListBox1->Items->Move(5,0);

Memo1->Clear();

Memo1->Lines->Text=("CheckListBox1->Items->Move(5,0);");

}

//Второй элемент списка становится недоступным

void __fastcall TForm1::RadioButton6Click(TObject *Sender)

{

CheckListBox1->ItemEnabled[1]=false;

Memo1->Clear();

Memo1->Lines->Text=("CheckListBox1->ItemEnabled[1]=false;");

}

//---------------------------------------------------------------------------

Рис.5.12 Программный код приложения, демонстрирующего свойства списка CheckListBox

В программном коде( Рис.5.12) строки текста в список CheckListBox 1 заносятся при создании формы(событие OnGreate)..При нажатии кнопки Button1, исходный список разделяется на два столбца. При нажатии кнопки Button2 элементы списка располагаются по алфавиту .С помощью кнопки Button3 определяются индексы выбранных пользователем индикаторов и их номера заносятся в список 2. При нажатии кнопки Button4 цифровая информация в первый список будет вводится в цикле. . Операторы кода, характеризующие другие свойства и методы списков реализуются при включении радио кнопок RadioButton1 – RadioButton6. Их характеристики даны в комментариях. Операторы программного кода ,соответствующие каждому событию отображаются в окне редактирования Memo1.

Ряд свойств, методов и событий комбинированного списка ComboBox демонстрирует приложение , приведенное на рисунках 5.13 и 5.14. На первом рисунке показан интерфейс приложения , а на втором –программный код.

Рис.5.13.Интерфейс приложения , демонстрирующего ряд свойств , методов и событий комбинированного списка ComboBox

В приложение включены два многострочных окна редактирования и один комбинированный список . Первое окно редактирования Memo1 используется для отображения свойств и методов комбинированного списка ComboBox1, второе окно Memo2 предназначено для демонстрации операторов кода при выполнении программы . На ряду с этим на форме размещены две кнопки типа Button, одна графическая кнопка типа BitBtn и четыре радио кнопки типа RadioButton. Назначение этих компонентов и их свойства, установленные во время проектирования, поясняются в таблице 5.7.

Таблица 5.7

Компонент

Свойство

Значение

Форма

Caption

Дем. свойств и методов списка СomboBox

Кнопки

Caption

Порядковый номер выбран. элем.(Button1)

Caption

Вывод текста по условию(Button2)

Графич.кнопка

Name

BitBtn1

Радио кнопки

Caption

Считывание выд. элемента (RadioButton1)

Caption

Встав. нов. элем. на 4-ю поз(RadioButton2)

Caption

Удаление 3-го элем. списка(RadioButton3)

Caption

Удаление всех элем. списка (RadioButton4)

Окна редактирования

Name

Memo1

Name

Memo1

Комбин. список

Name

ComboBox1

Другие свойства компонентов принимаются по умолчанию.

// Программный код приложения , демонстрирующего ряд свойств , методов и //событий комбинированного списка ComboBox

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

//Ввод информации в комбинированный список ComboBox

{

ComboBox1->Items->Add("Водка");

ComboBox1->Items->Add("Вино");

ComboBox1->Items->Add("Мясо");

ComboBox1->Items->Add("Фрукты");

ComboBox1->Items->Add("Рыба");

ComboBox1->Items->Add("Хлеб");

ComboBox1->Items->Add("Овощи");

ComboBox1->ItemIndex=0;

//Запись операторов программного кода в поле Memo2

Memo2->Text="Событие:FormGreate(Загрузка формы и элементов комб.поля)";

Memo2->Lines->Add("Фрагмент кода:ComboBox1->Items->Add(Водка);");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1Change(TObject *Sender)

{

Memo2->Text="Событие:Change(Изменение списка)";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1DropDown(TObject *Sender)

{

Memo2->Text="Событие:DropDown(Открытие списка)";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

//Порядковый номер,выбранного элемента списка

Memo1->Text= ComboBox1->ItemIndex+1;

//Запись операторов программного кода в поле Memo2

Memo2->Text="Событие: Button1Click(Включение кнопки)";

Memo2->Lines->Add("Код:Memo1->Text= ComboBox1->ItemIndex;");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton1Click(TObject *Sender)

{

Memo1->Text= ComboBox1->Text;//Считывание выбранного элемента списка

//Запись операторов программного кода в поле Memo1

Memo2->Text="Событие:RadioButton1Click(Включение переключателя )";

Memo2->Lines->Add("Код: Memo1->Text= ComboBox1->Text;");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

ComboBox1->Items->Insert(3,"новый элемент") ;//Вставка нового элемента на 4-ю //позицию

//Запись операторов программного кода в поле Memo2

Memo2->Text="Событие:RadioButton2Click(Включение переключателя )";

Memo2->Lines->Add("Код: ComboBox1->Items->Insert(3,новый элемент) ;");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton3Click(TObject *Sender)

{

ComboBox1->Items->Delete(2);//Удаление 3-го элемента

//Запись операторов программного кода в поле Memo2

Memo2->Text="Событие:RadioButton3Click(Включение переключателя )";

Memo2->Lines->Add("Код: ComboBox1->Items->Delete(2);");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton4Click(TObject *Sender)

{

for (int i=0 ; i<=ComboBox1->Items->Count ; i++ )

{

ComboBox1->Items->Delete(i) ;// Удаление всех элементов списка

}

//Запись операторов программного кода в поле Memo2

Memo2->Text="Событие:RadioButton4Click(Включение переключателя )";

Memo2->Lines->Add("Код:for(int i=0; i<=ComboBox1->Items->Count;i++)ComboBox1->Items->Delete(i)");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

//Вывод текста по условию

if (ComboBox1->Text=="Водка")

{

Memo1->Text="Водка Смирновская - 250 бутылок";

}

if (ComboBox1->Text=="Вино")

{

Memo1->Text="Вино Алазанская долина - 150 бутылок";

}

//Запись операторов программного кода в поле Memo2

Memo2->Text="Событие:Button2Click(Включение переключателя )";

Memo2->Lines->Add("Код: if (ComboBox1->Text==Водка)Memo1->Text=Водка Смирновская - 250 бутылок");

Memo2->Lines->Add ("if (ComboBox1->Text==Вино)Memo1->Text=Вино Алазанская долина - 150 бутылок");

}

//---------------------------------------------------------------------------

Рис.5.14 Программный код приложения, , демонстрирующего ряд свойств , методов и событий комбинированного списка ComboBox

В программном коде( Рис.5.14) показано, что заполнение списка ComboBox1 информацией происходит одновременно с созданием формы (событие OnGreate).С помощью кнопк Button1и Button2 выполняются операции по определению номера выбранного элемента и вывод в окно редактора Memo1 текста по условию . При включении радио кнопок RadioButton1 – RadioButton4 реализуются операции по редактированию элементов списка, смысл которых поясняется в комментариях. . Операторы программного кода ,соответствующие каждому событию отображаются в окне редактирования Memo2.