Практическое занятие № 2
Тема: "Создание программ с вариантами использования"
Цель работы: получить практические навыки по использованию флажков, переключателей, списков в программах на Delphi
Ход работы
Создать форму вида:

Форма должна запускаться по центру экрана, иметь фиксированные границы, кнопку разворачивания на весь экран отключить.
Указания: для формы задайте свойства: BorderStyle=bsSingle; BorderIcon-biMaximize=false; Caption=Создание программ с вариантами; Icon=произвольную иконку; Name=Form1.
На форме создать две закладки.
Указания: для создания закладок выберите компонент PageControl (Win32) и нанесите его на форму. В контекстном меню компонента выберите команду New Page для создания двух закладок. Для каждой закладки в свойстве Caption введите названия "Основная" и "Параметры".
На первой закладке создать счетчик для ввода первого числа и список для выбора второго числа
Указания: для создания счетчика из текстового поля установите свойства: ReadOnly = true ( запретим пользователю вводить текст с клавиатуры); Text=1; Name= Edit1. На вкладке Win32 выберите элемент UpDown и задайте ему свойства: Associate=Edit1; Min=1; Position=1.
Для ввода второго числа на форме создайте список с помощью элемента ListBox (Standard) и задайте ему свойства: Name=ListBox1; Items=введите перечень значений списка. При старте программы необходимо, что первая строка в списке была выбрана автоматически. Для этого в событии OnCreate формы напишите код:
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.ItemIndex:=0;
end;
Под списком создать панель с компонентами для редактирования списка. В поле можно ввести число и добавить его в список с помощью кнопки "+". С помощью кнопки "-" можно удалить из списка выбранное значение.
Указания: для редактирования списка на форме разместите компонент GroupBox (Standard). Для добавления нового значения в список на форме разместите текстовое поле со свойствами: Name=Edit2; Text очистить. Под полем разместите кнопку со свойствами Caption="+"; Name=Button1. Щелкните на кнопке два раза и напишите код:
procedure TForm1.Button1Click(Sender: TObject);
begin
//проверяем, есть ли в поле значение для добавления
if Edit2.Text<>'' then
begin
//если значение есть, то добавляем его с список
ListBox1.Items.Add(Edit2.Text);
//ставим курсор в списке на последнее (добавленное значение)
ListBox1.ItemIndex:=ListBox1.Count-1;
//очищаем поле после добавления
Edit2.Text:='';
//ставим курсор в поле для ввода нового значения
Edit2.SetFocus;
end
//если значения нет, то выдаем сообщение
else
Application.MessageBox('Нет данных для добавления',
'Операция прервана',
MB_OK+MB_IconStop);
end;
Для удаления значения из списка на форме создайте кнопку со свойствами Caption="-"; Name=Button2. Щелкните на кнопке два раза и напишите код:
procedure TForm1.Button2Click(Sender: TObject);
begin
//проверяем, есть ли в списке выбранная строка для удаления
//если такой строки нет, то
if ListBox1.ItemIndex=-1 then
begin
//выдаем сообщение об ошибке
Application.MessageBox('Не выбранна строка для удаления',
'Операция прервана',
MB_OK+MB_IconStop);
//завершаем работу
Exit;
end;
//выдаем запрос на удаление
if Application.MessageBox('Удалить значение?',
'Подтвердите',
MB_YesNo+MB_IconQuestion+MB_DefButton2)=IdYes then
begin
//если пользователь ответил "да", то удаляем выбранную строку
ListBox1.Items.Delete(ListBox1.ItemIndex);
//устанавливаем курсор на первую строку списка
ListBox1.ItemIndex:=0;
end;
end;
С помощью компонента RadioGroup создайте переключатели для выбора типа расчетов.
Указания: для создания группы переключателей воспользуйтесь элементом RadioGroup (Standard), для которого задайте свойства: Caption=Вид расчетов; Items= Сумма, разность, произведение, частное; ItemIndex=0 (первый переключатель выбран по умолчанию).
Под переключателями создайте панель, а на ней два флажка для выбора вида выдачи результата.
Указания: для создания группы флажков разместите на форме элемент GroupBox со свойством Caption=Вид вывода. На этом элементе создайте два компонента Checkbox, для которых задайте свойства: Name=Checkbox1 и Checkbox2; для компонента Checkbox1 задайте свойство Checked=True (флажок включен по умолчанию).
Под панелью создайте кнопку для выполнения расчетов и кнопку для выхода из программы.
Указания: для вывода ответа в новом окне создадим новую форму с помощью команды File-New-Form. Для формы зададим свойства: BorderStyle=bsSingle; BorderIcon-biMaximize=false; Caption=Результат расчетов; Icon=произвольная иконка; Name=Form2; Height=75; Width=300. На форме разместите элемент Label (Standard) со свойствами: AutoSize=false, Caption=Пустой символ; Aligmnent=taCenter; Font=параметры шрифта.
Для выполнения расчетов на главной форме создайте кнопку со свойствами: Caption=Расчеты; Name=Button3. Щелкните на кнопке два раза и напишите код:
procedure TForm1.Button3Click(Sender: TObject);
//описываем переменные для расчетов
var a,b,c:real;
begin
//конвертируем значение счетчика в переменную а
a:=UpDown1.Position;
//конвертируем значение из списка в число и записываем в переменную b
b:=StrToFloat(ListBox1.Items.Strings[ListBox1.ItemIndex]);
// в зависимости от выбранного переключателя считаем значение
case RadioGroup1.ItemIndex of
0: c:=a+b;
1: c:=a-b;
2: c:=a*b;
3: c:=a/b
end;
//в зависимости от выбранного флажка выдаем результат
//если включен первый флажок
if CheckBox1.Checked then
//выдаем ответ в сообщение
ShowMessage ('Ответ: '+FloatToStr(c));
//если включен второй флажок
if CheckBox2.Checked then
//выдаем ответ в новом окне
begin
Form2.Label1.Caption:='Ответ: '+FloatToStr(c);
Form2.ShowModal;
end;
end;
Для выхода из программы создайте на форме кнопку со свойствами: Caption=Очистить; Name=Button4. Щелкните на кнопке два раза и напишите код:
procedure TForm1.Button4Click(Sender: TObject);
begin
//завершаем работу с программой
Close;
end;
Для обработки выхода из программы в событии OnCloseQuery главной формы введите код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
//выдаем запрос на выход из программы
if Application.MessageBox('Выйти из программы?',
'Подтвердите',
MB_YesNo+MB_IconQuestion+MB_DefButton2)=IdNo then
//если пользователь ответил "нет", то не выходим
CanClose:=false;
end;
На второй закладке разместите панель, а на ней два флажка для настройки параметров программы:

Первый флажок блокирует или разблокирует текстовое поле счетчика для ввода данных с клавиатуры.
Второй флажок скрывает или отображает панель с компонентами для редактирования списка.
Указания: на второй закладке разместите панель GroupBox (Standard), а на панели два флажка.
Для первого флажка задайте свойства: Caption=Редактировать счетчик, Name=Checkbox3. Для флажка в событии OnClick введите код:
procedure TForm1.CheckBox3Click(Sender: TObject);
begin
//свойству ReadOnly счетчика присваиваем
//противоположное значение свойства Checked флажка
Edit1.ReadOnly:=not CheckBox3.Checked;
//переходим на первую закладку
PageControl1.Pages[0].Show;
//ставим курсор в поле счетчика
Edit1.SetFocus;
end;
Для второго флажка задайте свойства: Caption=Редактировать список, Name=Checkbox4. Для флажка в событии OnClick введите код:
procedure TForm1.CheckBox4Click(Sender: TObject);
begin
//свойству Visible панели
//присваиваем значение свойства Checked флажка
GroupBox1.Visible:= CheckBox4.Checked;
//переходим на первую закладку
PageControl1.Pages[0].Show;
end;