Начала объектно-ориентированного программирования в Delphi (уроки 8–11)

Разделы: Информатика


Урок 8–9: Элементы управления.

Цель: ознакомить учащихся с некоторыми классами элементов управления в Delphi, их назначением и методами элементов.

1. Повторение изученного материала:

Проверка домашнего задания: Создайте проект, производящий обратное преобразование – из радианной меры угла в градусную, результат округлять до целых.

2. Новый материал:

Элементы управления – это объекты, являющиеся элементами графического интерфейса проекта и реагирующие на события, производимые пользователем или другими программными объектами.

Перечислим некоторые классы элементов управления, которые имеют разное назначение в графическом интерфейсе проекта: (использовать таблицы 2–3 в конце учебника)

  • Текстовые поля Edit, надписи Label и списки ListBox и ComboBox для ввода и вывода данных;
  • Графические поля Image для вывода графики;
  • Командные кнопки Button, переключатели Radiobutton и флажки CheckBox для организации интерактивного диалога пользователя с проектом;
  • Главное меню MainMenu для создания меню формы;
  • Панель инструментов ToolBar для создания панели инструментов формы;
  • Коллекция изображений ImageListдля хранения изображений;
  • И т.д.

На форму может быть помещено несколько экземпляров одного класса элементов управления. Например, несколько кнопок или надписей, каждая из которых обладает индивидуальными значениями свойств (надпись, размеры, и т.д.)

Внимательно рассмотрите таблицу 4.2 (стр. 222) и выпишите в тетрадь 1-й и 5-й столбцы.

В результате должны получить таблицу:

Элемент управления Обозначение в Delphi Вкладка
Текстовое поле Edit1 Standart
Надпись Label1 Standart
Список ListBox1 Standart
Поле со списком ComboBox1 Standart
Счетчик UpDown1 Win32
Ползунок TrackBar1 Win32
Переключатель RadioButton1 Standart

Проект “Отметка”: Создать проект, который в зависимости от количества ошибок введенных с помощью различных элементов управления (списка, поля со списком, текстового поля, счетчика, ползунка и переключателей), выводит на надпись отметку.

1. Создание графического интерфейса (для получения внешнего вида формы как на рис.4.15 на стр.227) поместить на форму:

  1. для ввода количества ошибок список ListBox1, поле со списком ComboBox1, текстовое поле Edit1, счетчик UpDown1, ползунок TrackBar1, и переключатели RadioButton1 – RadioButton5;
  2. для вывода отметки надпись Label1;
  3. для вывода поясняющих надписей Label2 и Label3.


Рис. 1

2. Зададим свойства имеющихся элементов:

Компонент свойство значение
ListBox1 Items – … 0
1
2
3
4
5
6
ComboBox1 Items – … 0
1
2
3
4
5
6
  caption Очистить
Edit1 text Очистить
UpDown1 По умолчанию
TrackBar1 По умолчанию
RadioButton1 caption 0 ошибок
RadioButton2 caption 1 ошибка
RadioButton3 caption 2 ошибки
RadioButton4 caption 3 ошибки
RadioButton5 caption 4 и более ошибок
Label1 Caption очистить
  color clWhite
  Height 40
  Width 290
Label2 caption Количество ошибок
  color clMoneyGreen
Label3 caption Отметка
  color clMoneyGreen

3. Запишем программный код обработчика событий.

Объявим переменную N (глобальную) перед обращением к обработчику самого первого элемента управления, задав ей целочисленный тип. Глобальная переменная описывается один раз перед обращением к какой-либо процедуре и действует во всей программе одинаково.

Для реализации выбора отметки в зависимости от количества введенных ошибок используем оператор Case … of для всех элементов управления, кроме RadioButton1 – RadioButton5. А для последних элементов отметка прописывается индивидуально для каждой метки.

Например, программный код для компонента Edit1:

procedure TForm1.Edit1Change(Sender: TObject);
begin
N := StrToInt(Edit1.Text);
Case N of
0:Label1.Caption := ‘Отлично';
1:Label1.Caption := 'Хорошо';
2:Label1.Caption := 'Удовлетворительно';
3:Label1.Caption := 'Плохо;
Else Label1.Caption := 'Очень плохо’;
end; // заканчивает оператор Case…of
end; //заканчивает метод для Edit1

Здесь переменная N получает значение, установленное с клавиатуры в текстовое поле и приведенное к целочисленному виду с помощью функции StrToInt.

Для компонентов ListBox1 и ComboBox1 значение переменной N зависит от выбора значения в списке и определяется свойством ItemIndex соответствующего компонента.

Например для ListBox1 программный код примет вид:

procedure TForm1.ListBox1Click(Sender: TObject);
begin
N := ListBox1.ItemIndex;
Case N Of
0:Label1.Caption := ‘Отлично';
1:Label1.Caption := 'Хорошо';
2:Label1.Caption := 'Удовлетворительно';
3:Label1.Caption := 'Плохо;
Else Label1.Caption := 'Очень плохо’;
end;
end;

Для компонентов UpDown1 и TrackBar1 значение переменной N определяется положением ползунка или количеством кликов мышью на указатели перемещения вверх-вниз и определяется свойством Position соответствующего компонента.

Например, для UpDown1 программный код примет вид:

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
N := UpDown1.Position;
Case N Of
0:Label1.Caption := ‘Отлично';
1:Label1.Caption := 'Хорошо';
2:Label1.Caption := 'Удовлетворительно';
3:Label1.Caption := 'Плохо;
Else Label1.Caption := 'Очень плохо’;
end;
end;

Для компонентов RadioButton коды прописываем индивидуально для каждого. Например, для RadioButton1 программный код примет вид:

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Label1.Caption := 'Отлично';
end;

4. Закрепление и практическая часть.

Создать графический интерфейс проекта “Отметка”, записать программные коды для рассмотренных элементов, запустить на выполнение и проверить правильность работы проекта.

5. Д/з: записать программные коды для остальных элементов управления, имеющихся на форме проекта. Учебник п.4.7.

Урок10: Процедуры.

Цель: познакомить учащихся с правилами оформления вспомогательных алгоритмов в среде ООП Delphi.

3. Повторение изученного материала:

Самостоятельная работа: написать программный код для кнопок RadioButton 2, RadioButton 3 проекта “Отметка”.

4. Новый материал:

При разработке сложного алгоритма целесообразно выделить в нем последовательность действий, которые могут многократно вызываться из основного алгоритма. Такие алгоритмы называются вспомогательными и в алгоритмических языках программирования реализуются в виде подпрограмм, которые вызываются из основной программы. В ОО языке Delphi вспомогательные алгоритмы реализуются с помощью процедур. Каждой подпрограмме дается уникальное название и устанавливается список параметров, которые разделяются между собой точкой с запятой и содержат определение типов.

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

Процедура представляет собой подпрограмму, которая не возвращает значения и начинает выполняться после её вызова из другой процедуры.

Например: проект RefVal

var
RefA,ValB:byte;

procedure RefVal(var RefA:byte;ValB:byte); (подпрограмма)
begin
RefA := RefA * 5;
ValB := ValB * 5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
RefA := StrToInt(Edit1.Text);
ValB := StrToInt(Edit2.Text);
RefVal(RefA, ValB); (обращение к подпрограмме)
Label1.Caption := IntToStr(RefA);
Label2.Caption := IntToStr(ValB);
end;

Каждая переменная имеет значение и уникальный адрес, соответствующий положению переменной в оперативной памяти ПК. ООЯ позволяют передавать в процедуру как значение переменной (передача по значению), так и ее адрес в оперативной памяти (передача по ссылке).

При передаче параметров по значению вызываемая процедура не может изменить значение переменной в вызывающей процедуре.

При передаче параметров по ссылке вызываемая процедура может изменить значение переменной в вызываемой процедуре.

При оформлении подпрограммы, параметр, передаваемый по ссылке обозначается ключевым словом var, а для параметра, передаваемого по значению просто указывается его тип. Так в procedure RefVal(var RefA:byte;ValB:byte) параметр RefA передается по ссылке, а параметр ValB – по значению.

5. Проект “Передача по ссылке и по значению”.

  1. Самостоятельно создать графический интерфейс проекта в соответствии с видом, показанным на рисунке 4.19 учебника. Для удобства использовать инструкции на стр.235 “Создание графического интерфейса проекта на языках…” и таблицу 4.2 на стр.222.
  2. Определить свойства имеющихся элементов.
  3. Записать программный код для кнопки Button (Вычислить).

var
RefA,ValB:byte;

procedure RefVal(var RefA:byte;ValB:byte);
begin
RefA := RefA * 5;
ValB := ValB * 5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
RefA := StrToInt(Edit1.Text);
ValB := StrToInt(Edit2.Text);
RefVal(RefA, ValB);
Label1.Caption := IntToStr(RefA);
Label2.Caption := IntToStr(ValB);
End;

Д/з: п.4.9.1, вопросы стр. 238.

Урок11: Функции.

Цель: познакомить учащихся с правилами оформления вспомогательных алгоритмов в среде ООП Delphi.

6. Повторение изученного материала:

Ответить на вопросы:

  1. Для чего используются процедуры в языке программирования Delphi?
  2. Каковы правила оформления процедуры?
  3. как передаются параметры в процедуру?
  4. В чем отличие при передачи параметров по значению и по ссылке?
  5. Как отличается передача по значению и по ссылке в оформлении процедуры?

7. Новый материал:

Для оформления вспомогательных алгоритмов на языке программирования Delphi используются не только процедуры, но и функции.

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

Существует множество встроенных функций: математические (для вычисления модуля числа, синуса или косинуса угла и т.д.), преобразования типов данных (перевод из строчного вида в числовой и наоборот, …), обработки строк и др. Программист может создавать также и свои функции.

В языке ООП Delphi функция начинается с ключевого слова function , затем следует имя функции и в скобках список её параметров (аргументов). Тип возвращаемого функцией значения указывается после списка параметров. В теле функции обязательно должен быть хотя бы один оператор присваивания, где в левой части стоит имя функции, а в правой – её значение. Иначе значение функции не будет определено.

Например:

function F(X,Y:integer): integer;
begin
F := X*Y;
end;

Эта функция вычисляет произведение двух переменных Х и Y(целочисленного типа) и выдает в результате число F такого же целочисленного типа.

Проект “Функция”. Создать проект, в котором определяется функция (например, умножения двух чисел F = x * y), выводится на надпись значение выражения, в которое входит функция (например, ).

1. Cамостоятельно создать графический интерфейс проекта, соответствующий рис.4.20 на стр.241.


Рис. 2

2. Самостоятельно задать свойства элементов:

Компонент Свойство Значение
Edit1 Text  
Edit2 Text  
Label1 Caption  
Label2 Caption X
Label3 Caption Y
Button1 Caption Вычислить

3. Записать программный код для кнопки Button1: создать код вызываемой функции:

function F(X,Y:integer): integer;
begin
F := X*Y;
end;

импортировать модуль Math , который необходим для использования математических функций, объявить переменные и создать код вызывающей процедуры-обработчика события:

uses …, Math;

var
X,Y:integer;
function F(X,Y:integer): int64;
begin
F := X*Y;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
X := StrToInt(Edit1.Text);
Y := StrToInt(Edit2.Text);
Label1.Caption := FloatToStr(Sqrt(Power(F(X, Y), 2) + F(X, Y)));
end;

4. Запустить проект на выполнение и ввести в текстовые поля значения переменных (например, 2 и 3). На надписи будет выведено вычисленное значение выражения.

4. Д/з: создать проект, который определяет функцию (F = X3) и выводит на надпись значение выражения, использующего эту функцию .

Вопросы на стр.241.