Практическое занятие № 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;