Практическое занятие № 4

Тема: "Создание программ для конвертирования данных"

Цель: получить практические привычки по работе с меню и панелями инструментов

 

Ход  работы

Создать форму вид:

 

 

 

Указания: для формы задайте свойства: Caption=Конвертер величин; BorderStyle=bsSingle; BorderIcon-biMaximize=False; Position=poDesktopCenter; Height=127; Width=337.

 

В меню "Преобразование" поместить команды: "Сантиметры в Дюймы", "Дюймы в Сантиметры", "Цельсии в Фаренгейты", "Фаренгейты в Цельсии", "Фунты в Кг", "Кг в Фунты". Пункты меню является группой переключателей и имеют графические изображения.

 

Указания: для отображения иконок в меню на форме разместите компонент ImageList (Win32). Двойным щелчком на компоненте откройте его редактор и добавьте 6 произвольных изображений.

Для создания меню на форме разместите компонент MainMenu (Standard). Для компонента задайте свойство Images=ImageList1. Для создания пунктов меню двойным щелчком на компоненте MainMenu откройте окно Дизайнера меню. Введите название основного раздела меню "Преобразование" (см. рисунок).

Внутри этого раздела последовательно введите нужны пункты меню со свойствами:

 

1: Caption=Дюймы -> Сантиметры; ImageIndex=0;

2: Caption=Сантиметры -> Дюймы; ImageIndex=1;

3: Caption=Цельсии -> Фаренгейты; ImageIndex=2;

4: Caption=Фаренгейты -> Цельсии; ImageIndex=3;

5: Caption=Фунты -> Кг; ImageIndex=4;

6: Caption=Кг -> Фунты; ImageIndex=5;

 

Для создания группы переключателей из пунктов меню, удерживая Shift, выделите все пункты и задайте свойства: RadioItem=True; AutoCheck=True. Для выбора по умолчанию первого пункта меню выделите его и задайте свойство Checked=True.

 

Создать панель инструментов с набором кнопок в виде переключателей. Кнопки дублируют пункты меню и представляют собой группу переключателей.

 

Указания: для создания панели инструментов добавьте на форму компонент Toolbar (Win32). Для отображения иконок на кнопках панели задайте свойство Images = ImageList1.

Для добавления кнопок на панель инструментов в контекстном меню компонента Toolbar выберите команду New Button. Подобным образом добавьте на панель 8 кнопок. 

Для создания группы переключателей на панели инструментов, удерживая Shift, выделите все кнопки и задайте им свойства : Style=tbsCheck; Grouped=True. Для создания разделителей между кнопками выделите кнопки с номерами 3 и 6 и задайте свойство Style=tbsSeparator. Для выбора первой кнопки по умолчанию задайте ей свойство Down=True.

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

 

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

Для преобразования использовать формулы:  1 дюйм=2,54 см; 1 Фаренгейт=5/3*Цельсия +32; 1 фунт=0,457 кг.

 

Указания: для ввода и вывода результатов разместите на форме два компонента Edit (Standard). Для блокирования второго поля задайте ему свойство Enabled=False.

Над текстовыми полями разместите компоненты Label (Standard) для отображения направлений конвертирования. По умолчанию в первой надписи отобразите текст "Исходная величина", а во второй –" Результат";

 

Для написания кода для каждого пункта меню выберите его на форме и введите код:

 

//Пункт "Дюймы в Сантиметры"

procedure Tform1.N2Click(Sender: TObject);

begin    

    //Нажимаем на панели инструментов первую кнопку    

    ToolButton1.Down:= True;    

    //В надписях на форме отображаем направление конвертирования    

    Label1.Caption:= 'Дюймы';

    Label2.Caption:= 'Сантиметры';    

    //считаем значение по формуле

    //1 см = 1 дюйм * 2.54  

    Edit2.Text:= floattostr(strtofloat(Edit1.Text)* 2.54);

end;

 

//Пункт "Сантиметры в Дюймы"

procedure Tform1.N3Click(Sender: TObject);

begin    

    //Нажимаем на панели инструментов вторую кнопку    

    ToolButton2.Down:= True;    

    // В надписях на форме отображаем направление конвертирования   

    Label1.Caption:= 'Сантиметры';

    Label2.Caption:= 'Дюймы';    

    //считаем значение по формуле

    //1 дюйм = 1 см / 2.54

    Edit2.Text:= floattostr(strtofloat(Edit1.Text)/2.54);

end;

 

//Пункт "Цельсии в Фаренгейты"

procedure Tform1.N4Click(Sender: TObject);

begin    

    //Нажимаем на панели инструментов четвертую кнопку    

    ToolButton4.Down:= True;    

    //В надписях на форме отображаем направление конвертирования    

    Label1.Caption:= 'Цельсии:';    

    Label2.Caption:= 'Фаренгейты:';    

    //считаем значение по формуле

    //1 Фаренгейт = 1 Цельсий * 5 / 3 + 12

    Edit2.Text:= floattostr(strtofloat(edit1.Text)*(5/3)+12);

end;

 

//Пункт "Фаренгейты в Цельсии"

procedure Tform1.N5Click(Sender: TObject);

begin    

    //Нажимаем на панели инструментов пятую кнопку    

    ToolButton5.Down:= True;    

    //В надписях на форме отображаем направление конвертирования    

    Label1.Caption:= 'Фаренгейты:';    

    Label2.Caption:= 'Цельсии:';    

    //считаем значение по формуле

    //1 Цельсий = (1 Фаренгейт - 12) * 3 / 5

    Edit2.Text:= floattostr((strtofloat(Edit1.Text)-12) * (3/5));

end;

 

//Пункт "Фунты в Килограммы"

procedure Tform1.N6Click(Sender: TObject);

begin    

    //Нажимаем на панели инструментов седьмую кнопку    

    ToolButton7.Down:= True;    

    //В надписях на форме отображаем направление конвертирования    

    Label1.Caption:= 'Фунты';    

    Label2.Caption:= 'Кг';    

    //считаем значение по формуле

    //1 Килограмм = 1 Фунт * 0.454

    Edit2.Text:= floattostr(strtofloat(Edit1.Text) * 0.454);

end;

 

//Пункт "Килограммы в Фунты"

procedure Tform1.N7Click(Sender: TObject);

begin    

    //Нажимаем на панели инструментов восьмую кнопку    

    ToolButton8.Down:= True;    

    //В надписях на форме отображаем направление конвертирования    

    Label1.Caption:= 'Кг';    

    Label2.Caption:= 'Фунты';    

    //считаем значение по формуле

    //1 Фунт = 1 Килограмм / 0.454

    Edit2.Text:= floattostr(strtofloat(Edit1.Text) / 0.454);

end;

 

Обработать ситуацию, когда исходные данные в поле не введены (в поле должен появляться 0).

 

Указания: для блокирования кнопки расчетов в случае, если поле с исходными данными пустое, нужно в событии OnChange компонента Edit1 написать код:

 

procedure Tform1.Edit1Change(Sender: Tobject);

begin    

    //Если поле с исходными данными пустое    

    if Edit1.Text = '' then                

        //в поле записываем 0                

        Edit1.Text := '0';

end;

 

Попробуйте запустить программу и удалить текст в первом поле. В поле будет автоматически появляться 0.