Пример 16.2.

Создать проект,  в котором в форме с изменяемым цветом отображается компонент Shape1 (фигура), для которого можно менять тип и цвет. Формы фигур: stCircle, stEllipse, stsquare.

Выполнение

  1. Запустить ИСР.
  2. Создать в ней новое приложение.
  3. Присвоить свойству Caption компонента Form1 значение Prg_16_2.
  4. Сохранить модуль под именем prg_16_2_, а проект под именем prg_16_2.
  5. Разместить на форме компоненты:
  • кнопки Button1 и Button2,
  • комбинированный список ComboBox1,
  • метка Label1,
  • фигура Shape1 (со страницы Additional).
  • диалог цвета ColorDialog1 (со страницы Dialogs).

В инспекторе объекта установить значения свойств компонентов Button1, Button2:

paskal89

7.  После вышеперечисленных установок интерфейс проекта примет вид:

paskal90

8.  Для изменения цвета фигуры или формы во время выполнения приложения использовать стандартное диалоговое окно выбора цвета ColorDialog1. Этот компонент при исполнении программы невидим.

9.  Двойным щелчком по кнопке Цвет формы создать заготовку обработчика отклика на событие OnClick (на щелчок) для кнопки Цвет формы. Написать код обработчика, который при нажатии кнопки Цвет формы вызывает стандартное диалоговое окно выбора цвета с помощью диалогового окна ColorDialog1.

10.  Двойным щелчком по кнопке Цвет фигуры создать заготовку обработчика события OnClick (на щелчок) для кнопки Цвет фигуры. Написать код обработчика, который при нажатии кнопки установит значение свойства Brush.Color (цвет закраски) фигуры Shape1, выбираемое с помощью диалогового окна ColorDialog1.

11.  Запустить проект командой Запуск и проверить действие кнопок Цвет формы и Цвет  фигуры. При нажатии кнопок выбора цвета в отдельном окне отображается окно диалога выбора цвета, в котором следует выбирать желаемый цвет.

paskal91

12.  Для выбора нового вида фигуры использовать выпадающий список (ComboBox). Чтобы создать список в режиме проектирования, необходимо ввести нужные элементы в список Items, щелкнув маленькую кнопку с тремя точками в правой части строки Инспектора объектов, отображающую данное свойство. Список показан ниже.

paskal9213.  В диалоговое окно текстового редактора ввести имена фигур по заданию.

14.  Двойным щелчком по компоненту ComboBox1 создать заготовку обработчика события OnClick (на щелчок) для списка ComboBox1. В нее вставить код, позволяющий выбрать из списка нужный элемент. В список занести тип фигуры, по которому программа распознает имя отображаемой фигуры.

paskal93

Внимание: в обработчике каждой фигуре должен соответствовать индекс (Index) по таблице, так как по нему в Sharp выбирается отображаемая фигура.

15.  Для проверки кода запустить проект, а затем поочередно выбрать из списка разные виды фигур.

16.  Сохранить и закрыть проект. Запустить исполняемый файл проекта Prg_16_2 из среды Windows и проверить его работоспособность.

paskal94

Листинг модуля формы

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 могут быть залиты узором.

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong



Copyright © 2009-2010 Программирование на паскале.