
- •Содержание
- •Лабораторная работа №13 Изучение среды разработчика
- •Лабораторная работа № 14 События в Delphi
- •Лабораторная работа №15 Примеры создания модулей
- •Лабораторная работа №16 Примеры использования компонентов Label, Edit, Memo
- •Лабораторная работа №17 Примеры использования командных кнопок
- •Лабораторная работа№18 Изучение методов и свойств
- •Лабораторная работа№19 Пример использования компонентов RadioGroup и CheckListBox, Radiobutton, CheckBox.
- •Лабораторная работа№20 Примеры использования компонентов ListBox и ComboBox.
- •Лабораторная работа№21 Примеры использования компонента StringGrid.
- •Лабораторная работа №22 Отладка программ
- •Лабораторная работа№23 Примеры использования компонентов Image, Shape, Timer.
- •Лабораторная работа №24 Работа с формами
- •Лабораторная работа№25 Примеры использования компонента MainMenu и PopupMenu.
- •Лабораторная работа№26 Примеры использования компонентов OpenDialog, SaveDialog и FontDialog.
- •Лабораторная работа№27 Создание мультимедийных приложений.
- •Лабораторная работа№28 Печать текстовая и графическая.
- •Лабораторная работа№29 Работа с базами данных
- •Регистрация базы данных – создание псевдонима
- •Создание программы в Delphi
- •Лабораторная работа№30 Сортировка и фильтрация данных
- •Лабораторная работа№31 Вычисляемые поля. Перенос полей на форму
Лабораторная работа№18 Изучение методов и свойств
Цель работы: научиться использовать типы свойств в Delphi, изменять свойства компонент во время выполнения программы, изменять значения свойств компонент на этапе визуального программирования, научиться создавать методы с помощью визуальных средств, управлять методами компонент во время выполнения программы
Студент должен
знать:
типы свойств в Delphi;
методы в Delphi;
уметь:
создавать методы с помощью визуальных средств;
изменять свойства компонент во время выполнения программы
управлять методами компонент во время выполнения программы.
Примеры и задания
I.Рассмотрите приведенные ниже примеры, поясните процедуры, создайте рабочие проекты, по заданию преподавателя внесите в проект изменения
Написать программу для расчета стоимости поездки на дачу на машине.
// щелчок на кнопке Вычислить
procedure TForm1.Button1Click(Sender: TObject);
var
rast : real; // расстояние
cena : real; // цена
potr : real; // потребление на 100 км
summ : real; // сумма
mes: string;
begin
summ := (rast / 100) * potr * cena;
mes := 'Поездка на дачу';
if CheckBox1.Checked then
begin
summ := summ * 2;
mes := mes + ' и обратно';
end;
mes := mes + 'обойдется в ' + FloatToStrF(summ,ffGeneral,4,2)
+ ' руб.';
Label4.Caption := mes;
end;
end.
Задание 2
Напишите программу для пересчета фунтов в килограммы. Коэффициент пересчета 0.4059 – Россия, 0.453592- Англия, 0.56001- Австрия, 0.5 –Германия, 0.31762- Италия.
procedure TForm1.FormCreate(Sender: TObject);
begin
{
ListBox1.items.add('Россия');
ListBox1.items.add('Австрия');
ListBox1.items.add('Англия');
ListBox1.items.add('Германия');
ListBox1.items.add('Дания');
ListBox1.items.add('Исландия');
ListBox1.items.add('Италия');
ListBox1.items.add('Нидерланды');
}
ListBox1.itemindex:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
funt:real; { вес в фунтах }
kg:real; { вес в килограммах }
k:real; { коэффициент пересчета }
begin
case ListBox1.ItemIndex of
0: k:=0.4059; { Россия }
1: k:=0.453592;{ Англия }
2: k:=0.56001; { Австрия }
3..5,7:k:=0.5; { Германия}
6: k:=0.31762; { Италия }
end;
funt:=StrToFloat(Edit1.Text);
kg:=k*funt;
label4.caption:=Edit1.Text
+ ' фунт. - '
+ FloatToStrF(kg,ffFixed,6,3)
+ ' кг.';
end;
Задание 3
Напишите программу, которая вычисляет доход по вкладу (расчет простых и сложных процентов). Простые проценты начисляются в конце срока вклада. Сложные – ежемесячно и прибавляются к первоначальной сумме вклада и в следующем месяце проценты начисляются на новую сумму.
// щелчок на кнопке Вычислить
procedure TForm1.Button1Click(Sender: TObject);
var
sum : real; // сумма вклада
pr: real; // процентная ставка
srok: integer; // срок вклада
dohod: real; // доход по вкладу
buf: real;
i: integer;
begin
// получить исходные данные
sum := StrToFloat(Edit1.Text);
pr := StrToFloat(Edit2.Text);
srok := StrToInt(Edit3.Text);
if RadioButton1.Checked then
// выбран переключатель Простые проценты
dohod := sum * (pr/100) * (srok/360)
else
// т.к. в группе два переключателя, то если
// не выбран RadioButton1, то выбран
// RadioButton2 - Сложные проценты
begin
buf:= sum;
for i:=1 to srok do
buf:= buf + buf * (pr/100);
// здесь buf - сумма в конце срока вклада
dohod := buf - sum;
end;
sum := sum + dohod;
Label4.Caption := 'Доход: ' + FloatToStrF(dohod,ffGeneral,9,2) + #13 +
'Сумма в конце срока вклада: ' +
FloatToStrF(sum,ffGeneral,9,2);
end;
// выбор переключателя Простые проценты
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Label2.Caption := 'Срок (дней)';
Label4.Caption := '';
end;
// выбор переключателя Сложные проценты
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Label2.Caption := 'Срок (мес.)';
Label4.Caption := '';
end;
Задание 4
Написать программу, которая, используя закон Ома вычисляет силу тока, напряжение или сопротивление электрической цепи. Во время работы программы, в результате выбора переключателя, текст поясняющий назначение полей ввода должен меняться.
// Вычисление тока, напряжения или сопротивления
procedure Calculate;
var
I,U,R: real; // ток, напряжение, сопротивление
begin
if Form1.RadioButton1.Checked then
// ток
begin
U := StrToFloat(Form1.Edit1.Text);
R := StrToFloat(Form1.Edit2.Text);
if (R <> 0) then
begin
I := U/R;
Form1.Label3.Caption := 'Ток: ' + FloatToStrF(I,ffFixed,4,2) + ' А';
end
else ShowMessage('Сопротивление не должно быть равно нулю.');
exit;
end;
if Form1.RadioButton2.Checked then
// напряжение
begin
I := StrToFloat(Form1.Edit1.Text);
R := StrToFloat(Form1.Edit2.Text);
U := I*R;
Form1.Label3.Caption := 'Напряжение: ' + FloatToStrF(U,ffFixed,4,2) + ' В';
exit;
end;
if Form1.RadioButton3.Checked then
// сопротивление
begin
U := StrToFloat(Form1.Edit1.Text);
I := StrToFloat(Form1.Edit2.Text);
if (I <> 0) then
begin
R := U/I;
Form1.Label3.Caption := 'Сопротивление: ' + FloatToStrF(R,ffFixed,4,2) + ' Ом';
end
else ShowMessage('Ток не должен быть равен нулю.');
end;
end;
// Выбор переключателя Ток
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Label1.Caption := 'Напряжение (вольт)';
Label2.Caption := 'Сопротивление (Ом)';
Label3.Caption := '';
end;
// Выбор переключателя Напряжение
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Label1.Caption := 'Ток (ампер)';
Label2.Caption := 'Сопротивление (Ом)';
Label3.Caption := '';
end;
// Выбор переключателя Сопротивление
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
Label1.Caption := 'Напряжение (вольт)';
Label2.Caption := 'Ток (ампер)';
Label3.Caption := '';
end;
Задание 5
В мемо поле выведите сообщение, какой выбран пол и описание.
Задание 6
В поле «образец» текст должен выводиться согласно выбранным переключателям
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
if RadioButton1.Checked then Memo1.Lines.Add('ваш пол мужской')
else if RadioButton2.Checked then Memo1.Lines.Add('ваш пол женский');
Memo1.Lines.Add(' ');
if CheckBox1.Checked then Memo1.Lines.Add('умный') ;
if CheckBox2.Checked then Memo1.Lines.Add('трудолюбивый') ;
if CheckBox3.Checked then Memo1.Lines.Add('дружелюбный') ;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:edit1.Font.Style:=[];
1:edit1.Font.Style:=[fsitalic];
2:edit1.Font.Style:=[fsbold];
3:edit1.Font.Style:=[fsitalic,fsbold];
end;
{checklistbox1clickcheck(self);}
end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
begin
case RadioGroup2.ItemIndex of
0:edit1.Font.Size:=8;
1:edit1.Font.Size:=10;
2:edit1.Font.Size:=12 ;
3:edit1.Font.Size:=72;
end;
end;
procedure TForm1.RadioGroup3Click(Sender: TObject);
begin
case RadioGroup3.ItemIndex of
0:edit1.Font.Color:=clblack;
1:edit1.Font.Color:=clgreen;
2:edit1.Font.Color:=clred;
3:edit1.Font.Color:=clblue;
end;
end;
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
if CheckListBox1.Checked[0] then
edit1.Font.Style:=edit1.Font.Style+[fsstrikeout]
else
edit1.Font.Style:=edit1.Font.Style-[fsstrikeout];
if CheckListBox1.Checked[1] then
edit1.Font.Style:=edit1.Font.Style+[fsunderline]
else
edit1.Font.Style:=edit1.Font.Style-[fsunderline]
end;
end.
Контрольные вопросы:
Какие вы знаете типы свойств в Delphi?
Поясните термин методы в Delphi.
Как создавать методы с помощью визуальных средств?
Как изменять свойства компонент во время выполнения программы?
Как управлять методами компонент во время выполнения программы?