- •12.Списки
- •Interface
- •Implementation
- •13.Модули
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •14.Таблицы
- •Interface
- •Implementation
- •15.Графика, отображение графиков функций
- •Interface
- •Implementation
- •Initialization
- •16.Графика, примитивы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Initialization
- •17.Графика, растровые изображения и анимация
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •18.Тестирование и отладка
- •19.Квадратное уравнение
- •Interface
- •20.Класс tThread
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •21.Класс tStream
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •Initialization
- •22.Создание в Delphi кроссплатформенного приложения
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button:TMouseButton;
Shift: TShiftState; x,y:integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
procedure StarLine(x0,y0,r: integer; Canvas: TCanvas);
// x0,y0 - координаты центра звезды
// r - радиус звезды
var
p: array[1..11] of TPoint; // координаты лучей и впадин
a: integer; // угол между ОХ и радиусом
i: integer;
begin
a := 18; // строим от правого горизонтального луча
for i:=1 to 10 do
begin
if (i mod 2 = 0)
then
begin // впадина звезды
p[i].x := x0+Round(r/2*cos(a*2*pi/360));
p[i].y:=y0-Round(r/2*sin(a*2*pi/360));
end
else
begin // луч звезды
p[i].x:=x0+Round(r*cos(a*2*pi/360));
p[i].y:=y0-Round(r*sin(a*2*pi/360));
end;
a := a+36;
end;
p[11].X := p[1].X; // чтобы замкнуть контур звезды
p[11].Y := p[1].Y;
Canvas.Polyline(p); // начертить звезду
end;
// нажатие кнопки мыши
procedure TForm1.FormMouseDown(Sender: TObject;
Button:TMouseButton; Shift: TShiftState; x,y:integer);
begin
with Form1 do
begin
if Button = mbLeft // нажата левая кнопка?
then
begin
Canvas.Pen.Color := clBlack;
StarLine(x, y, 30,Canvas);
Canvas.Brush.Style:=bsDiagCross;
Canvas.Brush.Color:=clRed;
Canvas.FloodFill(x,y,Canvas.Pen.Color, fsBorder);
end
else
begin
Canvas.Pen.Color := clRed;
StarLine(x, y, 30,Canvas);
Canvas.Brush.Style:=bsCross;
Canvas.Brush.Color:=clBlue;
Canvas.FloodFill(x,y,Canvas.Pen.Color, fsBorder);
end;
end;
end;
end.
На рис. 16 .13представлен вид окна приложения задачи 1 при исполнении.
рис. 16.13. Окно работающего приложения задачи 1
Задание 2
Создать проект в котором в форме, цвет которой может изменяться, отображается компонент Shape1 (фигура), для которого можно менять тип, цвет и размеры. Формы фигур: stCircle, stEllipse, stsquare.
Выполнение
Запустить Delphi.
Создать в ней новое приложение.
Присвоить свойству Caption компонента Form1 значение Prg_16_2.
Сохранить модуль под именем Prg_16_2_, а проект под именем Prg_16_2.
Установить на форме компоненты:
кнопки Button1 и Button2, комбинированный список ComboBox1, линейки прокрутки ScrollBar1 и ScrollBar2, панель Panel1 (со страницы Standard).
фигура Shape1 (со страницы Additional).
диалог цвета ColorDialog1 (со страницы Dialogs).
Задать свойству Shape компонента Shape1 значение stEllipse (Эллипс). Используя свойство Brush, установить произвольный цвет объекта Shape1.
Установить значения свойств компонентов линеек прокрутки ScrollBar1 и ScrollBar2:
Name
ScrollBar1
ScrollBar2
Kind ( Тип)
sbHorizobntal (Горизонтальная)
sbVertical (Вертикальная)
Align (Размещение)
alBottom (Снизу)
alRight (Справа)
Компоненты Button1, Button2, ComboBox1 установить на передний план объекта Panel1 и выровнять их по вертикали.
Установить значения свойств компонентов Button1, Button2:
Компонент
Button1
Button2
Name (Имя)
FormColor
ShapeColor
Caption (Надпись)
Цвет формы
Цвет фигуры
Установить следующие значения строк списка ComboBox1:
Имя фигуры |
Тип фигуры |
stRectangle |
Прямоугольник |
stSguare |
Квадрат |
stRoundRect |
Прямоугольник со скругленными углами |
stRoundSguare |
Квадрат со скругленными углами |
stEllipse |
Эллипс |
stCircle |
Круг |
Внимание: имена фигур надо заносить в указанном порядке, так как они далее анализируются по номеру в списке.
Задать свойству BorderWidth компонента Panel1 значение 5. После вышеперечисленных установок интерфейс проекта примет вид, показанный на рис. 16 .14.
рис. 16.14. Форма проекта задачи 2
Для изменения цвета фигуры или формы во время выполнения приложения использовать стандартное диалоговое окно выбора цвета ColorDialog1. Этот компонент при исполнении программы невидим.
Двойным щелчком по кнопке Цвет формы создать заготовку обработчика отклика на событие OnClick (на щелчок) для кнопки Цвет формы. Написать код обработчика, который при нажатии кнопки Цвет формы вызывает стандартное диалоговое окно выбора цвета с помощью диалогового окна ColorDialog1.
Двойным щелчком по кнопке Цвет фигуры создать заготовку обработчика события OnClick (на щелчок) для кнопки Цвет фигуры. Написать код обработчика, который при нажатии кнопки установит значение свойства Brush.Color (цвет закраски) фигуры Shape1, выбираемое с помощью диалогового окна ColorDialog1.
Запустить проект командой Выполнить и проверить действие кнопок Цвет формы и Цвет фигуры. При нажатии кнопок выбора цвета в отдельном окне (см. рис. 16 .15) отображается окно диалога выбора цвета, в котором следует выбирать желаемый цвет.
рис. 16.15. Окно диалога выбора цвета
Вернуться в режим конструирования.
Запрограммировать изменение размера фигуры с помощью полос прокрутки. Для этого:
Двойным щелчком по компонентам создать заготовки методов для отклика на событие OnChange (на изменение) для каждой из полос прокрутки ScrollBar1 и ScrollBar2.
Написать для этих методов коды, которые установят свойство Width (ширина) или Height (высота) фигуры Shape1 в соответствии с положением "бегунка" на горизонтальной (ScrollBar1) или вертикальной (ScrollBar2) полосах прокрутки.
Подобрать соотношение между положением бегунков полосы прокрутки ScrollBar1.Position и ScrollBar2.Position (лежат в пределах 1...100) и размерами фигуры, при котором достигается лучшее представление изменения размеров фигуры.
Запустить проект и проверить действие каждой из полос прокрутки. Вернуться в режим конструирования.
Для выбора нового вида фигуры использовать выпадающий список (ComboBox). Чтобы создать список в режиме проектирования, необходимо ввести нужные элементы в список Items, щелкнув маленькую кнопку с тремя точками в правой части строки Инспектора объектов, отображающую данное свойство. Список показан на рис. 16 .16.
рис. 16.16. Список опций свойства Shape
В диалоговое окно текстового редактора (см. рис. 16 .16) ввести фигуры по заданию.
Двойным щелчком по компоненту ComboBox1 создать заготовку обработчика события OnClick (на щелчок) для списка ComboBox1. В нее вставить код, позволяющий выбрать из списка нужный элемент.
Для проверки кода запустить проект, а затем поочередно выбрать из списка разные виды фигур.
Сохранить и закрыть проект. Запустить исполняемый файл проекта Prg_16_2 из среды Windows и проверить его работоспособность.
Листинг модуля формы
unit Prg_16_2_;