Практическое занятие № 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;