Пример 16.2.
Создать проект, в котором в форме с изменяемым цветом отображается компонент Shape1 (фигура), для которого можно менять тип и цвет. Формы фигур: stCircle, stEllipse, stsquare.
Выполнение
- Запустить ИСР.
- Создать в ней новое приложение.
- Присвоить свойству Caption компонента Form1 значение Prg_16_2.
- Сохранить модуль под именем prg_16_2_, а проект под именем prg_16_2.
- Разместить на форме компоненты:
- кнопки Button1 и Button2,
- комбинированный список ComboBox1,
- метка Label1,
- фигура Shape1 (со страницы Additional).
- диалог цвета ColorDialog1 (со страницы Dialogs).
В инспекторе объекта установить значения свойств компонентов Button1, Button2:
7. После вышеперечисленных установок интерфейс проекта примет вид:
8. Для изменения цвета фигуры или формы во время выполнения приложения использовать стандартное диалоговое окно выбора цвета ColorDialog1. Этот компонент при исполнении программы невидим.
9. Двойным щелчком по кнопке Цвет формы создать заготовку обработчика отклика на событие OnClick (на щелчок) для кнопки Цвет формы. Написать код обработчика, который при нажатии кнопки Цвет формы вызывает стандартное диалоговое окно выбора цвета с помощью диалогового окна ColorDialog1.
10. Двойным щелчком по кнопке Цвет фигуры создать заготовку обработчика события OnClick (на щелчок) для кнопки Цвет фигуры. Написать код обработчика, который при нажатии кнопки установит значение свойства Brush.Color (цвет закраски) фигуры Shape1, выбираемое с помощью диалогового окна ColorDialog1.
11. Запустить проект командой Запуск и проверить действие кнопок Цвет формы и Цвет фигуры. При нажатии кнопок выбора цвета в отдельном окне отображается окно диалога выбора цвета, в котором следует выбирать желаемый цвет.
12. Для выбора нового вида фигуры использовать выпадающий список (ComboBox). Чтобы создать список в режиме проектирования, необходимо ввести нужные элементы в список Items, щелкнув маленькую кнопку с тремя точками в правой части строки Инспектора объектов, отображающую данное свойство. Список показан ниже.
13. В диалоговое окно текстового редактора ввести имена фигур по заданию.
14. Двойным щелчком по компоненту ComboBox1 создать заготовку обработчика события OnClick (на щелчок) для списка ComboBox1. В нее вставить код, позволяющий выбрать из списка нужный элемент. В список занести тип фигуры, по которому программа распознает имя отображаемой фигуры.
Внимание: в обработчике каждой фигуре должен соответствовать индекс (Index) по таблице, так как по нему в Sharp выбирается отображаемая фигура.
15. Для проверки кода запустить проект, а затем поочередно выбрать из списка разные виды фигур.
16. Сохранить и закрыть проект. Запустить исполняемый файл проекта Prg_16_2 из среды Windows и проверить его работоспособность.
Листинг модуля формы
unit prg_16_2_;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ColorDialog1: TColorDialog;
ComboBox1: TComboBox;
Label1: TLabel;
Shape1: TShape;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then Form1.Color:= ColorDialog1.Color;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ColorDialog1.Execute then Shape1.Brush.Color:= ColorDialog1.Color;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
Index: integer;
begin
if ComboBox1.Text=’Прямоугольник’ then Index:=0;
if ComboBox1.Text=’Квадрат’ then Index:=1;
if ComboBox1.Text=’Скругленный прямоугольник’ then Index:=2;
if ComboBox1.Text=’Скругленный квадрат’ then Index:=3;
if ComboBox1.Text=’Эллипс’ then Index:=4;
if ComboBox1.Text=’Круг’ then Index:=5;
if ComboBox1.Text=’Ромб’ then Index:=6;
Shape1.Shape:=TShapeType(Index);
end;
initialization
{$I prg_16_2_.lrs}
end.
Выводы
Для построения графиков используются графические примитивы.
Определены графические примитивы:
- Линия и метод LineTo его отображения.
- Кусочно-ломаная линия и метод PolyLine и его отображения.
- Хорда (линия поперек эллипса) и метод Chord его отображения.
- Прямоугольная рамка и метод FrameRect его отображения.
- Заполненный прямоугольник и метод Rectangle его отображения.
- Заполненный многоугольник и метод Polygon его отображения.
- Заполненный прямоугольник со скругленными углами и метод RoundRect его отображения.
- Дуга и метод Arc его отображения.
- Заполненный эллипс и метод Ellipse его отображения.
- Пирог (сектор эллипса) и метод Pie его отображения.
Определен метод заполнения замкнутых фигур FloodFill (заполнить область),
Имеется метод вывода текста: TextOut (вставить строку текста).
Определен компонент TShape (фигура), позволяющий быстро выбирать фигуру для построения.
Для изменения интерфейса используются кнопки, линейки прокрутки, списки, меню, диалоги.
Замкнутые фигуры с помощью инструмента Brush могут быть залиты узором.