ЛАБОРАТОРНЫЕ РАБОТЫ: ТЕОРИЯ И ЗАДАНИЯ
Текстовые компоненты Label, Edit, Memo. Кнопка Button
Пример использования компонентов Label, Edit, Memo и Button
Пример 1.1. Задание - Составить программу, вычисляющую корни квадратного уравнения
а2 * х2 + а1 * х + а0=0
с произвольными коэффициентами (a2 ≠0).
Решение
1. Создадим папку D:\MyProject\Text (можно любую другую).
2. Откроем новое приложение с помощью команды главного меню File | New
Application.
3. На форме Form1 разместим следующие компоненты: четыре метки Label, три компонента Edit, один редактор Memo и две кнопки Button
Все компоненты берем со страницы Standard Палитры Компонентов.
4. Свойству Caption метки Label1 зададим значение:
Введите коэффициенты квадратного уравнения
А2 * Х^2+А1 * Х+А0 = 0
Для того чтобы текст располагался в двух строках и был выровнен по центру для метки необходимо установить следующие значения свойств:
AutoSize - False,
WordWrap - True,
Alignment - taCenter.
Размеры метки и ее местоположение можно отрегулировать вручную.
Перейдем в свойство Font и щелкнем по кнопке с тремя точками. В появившемся окне изменим размер шрифта с 8 на 10. Нажмем ОК.
|
|
5. Для меток Label2, Label3 и Label4 установим свойство Caption равным ‘А0 = ‘, ‘ А1 = ‘ и ‘ А2 = ‘ соответственно.
6. Для компонентов Edit1, Edit2 и Edit3 установим значение свойства Text равным пустой строке.
7. Для компонента Memo1 выберем свойство Lines и щелкнем по кнопке с тремя
точками. В появившемся окне Stringlist editor удалим строку ‘Memо1’. Нажмем ОК.
8. Кнопкам Button1 и Button2 установим свойство Caption равным ‘Решение’ и ‘Очистить’ соответственно.
9. Двойным щелчком активизируем кнопку Решение и для обработчика события
OnClick вставим следующие строки:
procedure TForm1.Button1Click(Sender: TObject);
var a0, a1, a2, d, x1, x2: double;
begin
a0:= StrToFloat(Edit1.Text);
al:= StrToFloat(Edit2.Text);
a2:= StrToFloat(Edit3.Text);
d:= a1*a1-4*a2*a0;
if d>=0 then begin
xl:= (-a1+sqrt(d))/(2*a2);
x2:= (-a1-sqrt(d))/(2*a2);
Memo1.Lines.Add(‘Результат:’);
Memo1.Lines.Add(‘x1 = ’+ FloatToStrF(x1,ffGeneral,7,2));
Memo1.Lines.Add(‘x2 = ’+ FloatToStrF(x2,ffGeneral,7,2));
end
else
Memo1.Lines.Add(‘Решений нет:’);
end;
10. Нажмем клавишу F12 и вернемся в форму. Двойным щелчком активизируем кнопку «Очистить» и в обработчик события OnClick вставим строку
Memo1.Clear;
11.Сохраним проект в папке D:\MyProject\Text и запустим приложение на выполнение, используя функциональную клавишу F9 или кнопку «зелёный треугольник». Для решения квадратного уравнения введем коэффициенты и нажмем кнопку Решение. Для очистки окна редактора нажмем кнопку «Очистить»
Полный текст сформированного модуля Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
|
|
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation {$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var a0,a1,a2,d,x1,x2: double;
begin
a0: = StrToFloat(Edit1.Text);
a1:= StrToFloat(Edit2.Text);
a2:= StrToFloat(Edit3.Text);
d:= a1*a1-4*a2*a0;
if d>=0 then begin
x1:= (-a1+sqrt(d))/(2*a2);
x2:= (-a1-sqrt(d))/(2*a2);
Memo1.Lines.Add(‘Результат:’);
Memo1.Lines.Add(‘x1 =’+ FloatToStrF(x1, ffGeneral,7,2));
Memo1.Lines.Add(‘x2 =’+ FloatToStrF(x2, ffGeneral,7,2));
end
else
Memo1.Lines.Add(‘Решений нет:’);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Clear;
end;
end.
Классы и компоненты Delphi,
Предназначенные для создания изображений.
Создать заставку для приложения.
Решение
Заставки имеют многие программы, работающие в операционных системах семейства Windows. Заставка представляет собой графическое изображение, появляющееся на несколько секунд после запуска программы. В ней может содержаться название программного продукта и информация о разработчиках. Графическое изображение, т.е. файл с расширением.bmp, создадим с помощью графического редактора. Перед запуском Delphi создадим папку D:\MyProject\GRAFICA.
1. Откроем любое из ранее созданных приложений или создадим новое. Графический редактор запустим с помощью команды главного меню Tools|Image Editor.
Работа в графическом редакторе Delphi мало чем отличается от работы в известном графическом редакторе Paint. При создании графического файла вы можете поступить одним из двух способов - либо создать новый файл, либо внести изменения в существующий. Выберем первый способ. Выполним команду главного меню File|New|Bitmap File(.bmp). В появившемся диалоге Bitmap Properties в поле Width (ширина) установим — 300, а в поле Height (высота) - 200. В группе переключателей Colors выберем переключатель VGA (16 colors) или любой другой, в зависимости от того, сколько цветов вы хотите включить в свой рисунок.
Нажмем ОК.
4. Создадим произвольное изображение. Для того чтобы выбрать цвет символов, следует подвести курсор мыши к окну с требуемым цветом в палитре цветов и нажать левую клавишу. При нажатой правой клавише мыши выбранный цвет будет использоваться в качестве цвета фона. В простейшем случае можно поступить, например, так: набрать черными буквами на белом фоне текст:
Разработчик — Студентиков С.С.
Пример создания
ЗАСТАВКИ
Выберем черный цвет для символов, белый для фона в палитре цветов. Выполним команды EditSSelect All и EditSCut для очистки рисунка. Далее вставим приведенный выше текст. Для этого воспользуемся кнопкой T (Text) инструментальной панели. Прежде чем размещать текст, следует задать характеристики шрифта с помощью команды Text|Font.
5. Выполним команду File | Save и сохраним графический файл в папке D:\MyProject\GRAFICA под именем ris.bmp.
Выйдем из графического редактора по команде File | Exit.
Со страницы System поместим на форму Form1 компонент Timer. Он получит имя Timer1. Свойство Interval установим равным 3000.
Со страницы Additional поместим на форму компонент Image (имя - Image1).
Выберем свойство Picture и нажмем кнопку с тремя точками. Появится окно Picture Editor. Нажмем кнопку Load. Войдем в папку D:\MyProject\GRAFICA и выберем файл ris.bmp. В Picture Editor нажмем ОК. Для того чтобы рисунок был виден полностью, установим свойство Autosize в True. После этого расположим рисунок так, чтобы он находился в центре формы.
Активизируем компонент Timer1 двойным щелчком и создадим следующий обработчик события OnTimer:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Free;
Timer1.Free
end;
Это означает, что через 3000 миллисекунд после запуска приложения компоненты Image1 и Timer1 будут удалены из памяти компьютера и соответственно - с экрана.
Сохраним проект под именем Project1 (можно под любым другим) и модуль под именем Unit1 в папке D:\MyProject\GRAFICA. Запустим проект на выполнение. На рисунке изображен внешний вид приложения в момент его запуска.
Разработчик – Студентиков С.С.
Пример создания
ЗАСТАВКИ
Полный код сформированного модуля. Текст модуля Unit1.pas
|
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Image1: TImage;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Free;
Timer1.Free
end;
end.
Если бы нам потребовалось, чтобы заставка «мигала», т.е. периодически появлялась и исчезала, мы могли бы создать следующий обработчик события OnTimer:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Image1.Visible = true
then Image1.Hide
else Image1.Show;
end;
Пример 2.2
Создадим приложение, демонстрирующее «вращение Луны вокруг Земли».
Решение
1. Создадим новое приложение.
2. Со страницы System поместим на Form1 компонент Timer под именем Timer1. Его свойство Interval установим равным 55. Через каждые 55 миллисекунд будет возбуждаться событие OnTimer, которое мы будем использовать для перемещения по форме компонента Shape2. Число 55 - это минимальное значение, называемое тиком, которое можно установить в качестве значения свойства Interval. В общем случае любое значение свойства Interval будет округлено в большую сторону до числа, кратного 55. Это связано с особенностями аппаратного таймера компьютера.
3. Со страницы Additional поместим на Form1 компонент Shape под именем Shape1.
Установим следующие значения для его свойств:
Shape - stCircle,
Height - 121,
Width - 121,
Left - 240,
Top - 104.
Выберем свойство Brush и выполним по нему двойной щелчок мышью. В Инспекторе Объектов дополнительно появились два свойства: Color и Style. Выберем свойство Color и установим его равным clBlue.
4. Поместим на Form1 компонент Shape под именем Shape2. Установим следующие значения для его свойств:
Shape - stCircle,
Height - 41,
Width - 41,
Left - 400,
Top - 152.
В свойстве Brush установим цвет кисти clYellow.
5. В верхней части Form1 разместим компонент Label под именем Label1. Его свойству Caption зададим значение – ‘Вращение Луны вокруг Земли’. Войдем в свойство Font и установим:
Шрифт - Courier New,
Начертание - полужирный,
Размер - 16,
Набор символов - кириллица.
Свойство Transparent установим равным True.
6. Активизируем двойным щелчком компонент Timer1. Внесем исправления в текст модуля, начиная с раздела var
|
|
Текст модуля Unit2.pas
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Shape1: TShape;
Shape2: TShape;
Label1: TLabel;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; x:real;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:= x + 0.1;
Shape2.Left:=265 + trunc(150 * cos(x));
Shape2.Top:=150 - trunc(150 * sin(x))
end;
initialization
x:= 0
end.
Заметим, что обработчик события OnTimer предназначен для увеличения текущего значения переменной х и, соответственно, для изменения текущего положения компонента Shape2 на форме. Это означает, что переменная х должна быть глобальной по отношению к процедуре TForm1.Timer1Timer и ее следует описать в разделе var секции interface. Начальное значение переменной х может быть задано в секции initialization.
7. Выполним команду главного меню File|Save All и сохраним проект под именем Project2, модуль под именем Unit2 в папке D:\MyProject\Flight. Запустим проект на выполнение.
Пример 2.3.
Создадим изображение с помощью компонента PaintBox.
Решение
Компонент PaintBox предоставляет в наше распоряжение окно, в котором мы можем создать произвольное изображение. Программный код, создающий изображение, должен располагаться в обработчике события OnPaint.
Нарисуем круговую диаграмму, содержащую четыре сектора красного, белого, синего и желтого цвета. Для каждого сектора выведем текст, содержащий размер сектора в процентах.
1. Создадим новое приложение.
2. Поместим на Form1 компонент PaintBox под именем PaintBox1. Установим его размеры: Height = 200; Width = 200.
3. В Инспекторе Объектов перейдем на страницу Events и выполним двойной щелчок по правому полю в строке, содержащей имя события OnPaint. В модуле Unit3.pas сформируем обработчик события OnPaint.