- •Министерство образования российской федерации
- •Северо-западный государственный заочный технический университет
- •В. Л. Макаров
- •Прикладное программирование
- •Конспект лекций с. Петербург 2003г
- •Окно формы. Форма является основой большинства приложений , так как на ней размещаются другие управляющие компоненты. Внешний вид окна формы показан на рисунке 1.3.
- •3.Основные свойства, методы и события формы
- •Компоненты vcl
- •5.1. Кнопки управления
- •5.2. Окно редактирования Edit
- •5.3 Многострочные окна редактирования Memo и RichEdit
- •5.4 Компоненты выбора из списков – ListBox, CheckListBox, ComboBox
- •5.5 Элемент управления Label (надпись или метка)
- •5.6 Элемент управления RadioButton (Радиокнопка)
- •5.7 Полосы прокрутки (ScrollBar)
- •5.9 Компонент Timer(Таймер)
- •5.10 Компонент StringGrid ( таблица строк)
- •5.11 Компонент Chart – графики и диаграммы
- •5.12 Компонент f1Book
- •6. Создание меню
- •7. Системные диалоги
- •7.1 Диалоги открытия и сохранения файлов
- •7.2 Диалог выбора шрифта(компонент FontDialog )
- •7.3 Диалог выбора цвета(компонент ColorDialog )
- •7.4Диалоги поиска и замены текста(компоненты FindDialog и ReplaceDialog )
- •8.1 Структура головного файла проекта
- •8.2 Структура файлов модулей форм
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.