Практическое занятие № 5
Тема: "Приемы работы с формами"
Цель работы: получить практические навыки по динамическому созданию форм, созданию форм-заставок и форм произвольного вида
Ход работы
1. Создать главную форму вида:

Форма не имеет кнопок Свернуть и Развернуть, имеет фиксированную границу, запускается по центру экрана. Кнопка на форме нужна для открытия второй формы с информацией о программе.
Указания: Для формы задайте свойства: BorderStyle = Dialog, Caption = Главная программа, Name = frmMain, Position = DesktopCenter.
На форму нанесите компонент Button (Standard) и настройте его свойство Caption = О программе.
2. Создайте новую форму с информацией о программе вида:
Форма отображается в виде многоугольника по центру экрана. При щелчке на любом месте формы она закрывается.
Указания: С помощью кнопки New
Form
создайте новую форму. Для формы задайте новое имя Name =
frmAbout.
На форме разместите два компонента Label (Standard) и в их свойстве Caption укажите текст, показанный на рисунке формы. Разместите полученные надписи по центру формы.
Для создания формы в виде многоугольника сначала нужно высчитать координаты каждой из 8 точек. Откройте изображение в программе Paint и, наводя последовательно указатель мыши на точки, считывайте их координаты в строке статуса программы.
Пусть изображение имеет размер 400х300 точек. Следовательно, координаты точек
В событии OnCreate формы напишем код, который по точкам (начиная с верхней вершины) построит на форме многоугольник.
procedure TfrmAbout.Formcreate(Sender: Tobject);
//описываем переменную для создания региона формы
var MyRegion:HRGN;
//описываем массив для задачи восьми точек
p:array [0..7] of TPoint;
begin
//задаем координаты точек по часовой стрелке начиная с верхней вершины
//вместо значений x,y вводите конкретные значения координат каждой точки
p[0]:=Point(x,y);
p[1]:=Point(x,y);
p[2]:=Point(x,y);
p[3]:=Point(x,y);
p[4]:=Point(x,y);
p[5]:=Point(x,y);
p[6]:=Point(x,y);
p[7]:=Point(x,y);
//формируем регион в виде многоугольника из массива 8 точек
myregion:=CreatePolygonRgn(p,8,alternate);
//применяем регион к форме
SetWindowRgn(Handle,MyRegion,true);
end;
Чтобы форма закрывалась при щелчке на ней, в событии OnClick формы напишите код:
procedure TfrmAbout.Formclick(Sender: Tobject);
begin
Close;
end;
3. На главной форме для кнопки написать код, который открывает форму с информацией о программе (форма frmAbout). При этом форма создается не автоматически при старте программы, а динамично при щелчке на кнопке.
Указания: чтобы форма frmAbout не создавалась в памяти компьютера при запуске программы, выполните команду Project - Options, на закладке Forms перенесите форму frmAbout из списка Auto-create Forms в список Available Forms.
procedure Tfrmmain.Button1Click(Sender: Tobject);
begin
//динамически создаем форму frmAbout в памяти
frmAbout:=TfrmAbout.Create(nil);
//отображаем созданную форму на экране
frmAbout.Show;
//обновляем форму
frmAbout.Repaint;
end;
При закрытии формы frmAbout она должна
автоматически удаляться из памяти. Для этого с помощью кнопки View Form
или
клавиши Shift+F12 перейдите на форму frmAbout и в событии OnClose введите код:
procedure TfrmAbout.Formclose(Sender: Tobject; var Action: Tcloseaction);
begin
Action:=caFree;
end;
4. Создайте форму-заставку, которая "обрезается" по контуру рисунка, размещенного на ней. Форма имеет вид:

Указания: С помощью кнопки New
Form
создайте новую форму. Переименуйте форму с помощью свойства Name
= frmZast.
На форме разместите компонент Image (Additional) и задайте свойства: Align = alClient, Stretch = true, Picture = файл изображення
Чтобы форма "обрезалась" по контуру изображения, нужно на форме сделать прозрачным цвет фона изображения. Для этого для формы frmZast задайте свойства: TransparentColor = true, TransparentColorValue = clWhite (выбираем белый цвет, потому что фон нашего изображение белый).
5. Форма-заставка должная динамически создаваться и появляться на экране перед запуском основной программы.
Указания: чтобы форма frmZast не создавалась в памяти компьютера при запуске программы, выполните команду Project - Options, на закладке Forms перенесите форму frmZast из списка Auto-create Forms в список Available Forms.
Для вызова формы- заставки с помощью команды Project - View Source откройте код файла проекта.
Для создания паузы при отображении формы- заставки в коде проекта подключите модуль Window.
После ключевого слова Begin введите код:
//создаем в памяти форму-заставку
frmZast:=TfrmZast.Create(nil);
//отображаем форму-заставку на экране
frmZast.Show;
//обновляем форму-заставку
frmZast.Repaint;
//делаем паузу в 2 секунды
Sleep(2000);
Перед запуском основной программы (перед командой Application.Run) закрываем форму-заставку и удаляем ее из памяти. Для этого введите команду:
frmZast.Free;