Текст модуля Unit3.pas

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;

type

TForm1 = class(TForm)

PaintBox1: TPaintBox;

procedure PaintBox1Paint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

{$R *.DFM}

 

procedure TForm1.PaintBox1Paint(Sender: TObject);

procedure sector(clr: TColor; angle1, angle2: real;

msg: string);

var x1, x2, y1, y2: integer;

begin

PaintBox1.Canvas.Brush.Color:= clr;

x1:= trunc(cos(angle1) * PaintBox1.Width/2 + PaintBox1.Width/2);

y1:= PaintBox1.Height - trunc(sin(angle1) * PaintBox1.Height/2 +

PaintBox1.Height/2);

х2:= trunc(cos(angle2) * PaintBox1.Width/2 + PaintBox1.Width/2);

у2:= PaintBox1.Height - trunc(sin(angle2) * PaintBox1.Height/2

+ PaintBox1.Height/2);

PainBox1.Canvas.Pie(0, 0, PaintBox1.Width, PaintBox1.Height, x1,

y1, x2, y2);

PaintBox1.Font.Name:= ‘Arial’;

PaintBox1.Font.Size:= 8;

PaintBox1.Font.Color:= clBlack;

PaintBox1.Font.Style:= [fsBold];

PaintBox1.Canvas.TextOut(trunc((x1 + x2)/2)- 20, trunc((y1+y2)/2),

msg);

end;

begin

sector(clLime, 0, pi/3, ‘16,5%’);

sector(clWhite, pi/3, 5 * pi/6, ‘25%’);

sector(clSkyBlue, 5 * pi/6, 7 * pi/5, ‘28,4%’);

sector(clYellow, 7 * pi/5, 2 * pi, ‘30%’);

end;

end.

 

Для рисования сектора круга в обработчике TForm1.PaintBox1Paint определена про­цедура sector:

procedure sector(clr: TColor; angle1, angle2: real; msg: string);

имеющая следующие параметры:

clr - цвет, которым закрашен сектор;

angle1 - начальный угол, т.е. угол между осью ОХи правой стороной секто­ра

(задается в радианах);

angle2 - конечный угол, т.е. угол между осью ОХи левой стороной сектора

(задается в радианах);

msg - текст, используемый для подписи сектора.

4. Выполним команду главного меню File|Save All и сохраним проект под именем Project3, модуль под именем Unit3 в папке D:\MyProject\Diagram. Запустим про­ект на выполнение. Для сокращения записи при обращении к свойствам и полям объектов можно использовать оператор присоединения with. В качестве примера приведем код обра­ботчика

TForm1.PaintBox1Paint с использованием оператора with:

 

procedure TForm1.PaintBox1Paint(Sender: TObject);

procedure sector(clr: TColor; angle1, angle2: real;

msg: string);

var x1, x2, у1, у2: integer;

begin

with PaintBox1,Canvas do

begin

Brush.Color:= clr;

x1:= trunc(cos(angle1) * Width/2 + Width/2);

y1:= Height - trunc(sin(angle1) * Height/2 + Height/2);

x2:= trunc(cos(angle2)* Width/2 + Width/2);

y2:= Height - trunc(sin(angle2)* Height/2 + Height/2);

Pie(0, 0, Width, Height, x1, y1, x2, y2);

Font.Name:= ‘Arial’;

Font.Size:= 8;

Font.Color:= clBlack;

Font.Style:= [fsBold];

TextOut(trunc((xl+x2)/2) - 20, trunc((y1 + y2) / 2), msg);

end;

end;

begin

sector(clLime, 0, pi/3, ‘16,5%’);

sector(clWhite, pi/3, 5 * pi/6, ‘25%’);

sector(clSkyBlue, 5 * pi/6, 7 * pi/5, ‘28,4%’);

sector(clYellow, 7 * pi/5, 2 * pi, ‘30%’);

end;

Панель переключателей RadioGroup

И список выключателей CheckListBox

 

Создадим приложение, позволяющее менять характеристики текста, набранного в строке ввода Edit.

Решение

Для изменения начертания, размера и цвета шрифта будем использовать панели переключателей, а для изменения атрибутов шрифта (зачеркнутый, подчеркнутый) будем использовать список выключателей.

1. Создадим новую папку, например D:\MyProject\RadioCheck.

2. Откроем новое приложение с помощью команды главного меню
File | New | Application.

3. На форме Form1 разместим компоненты: два компонента Label, три компонента RadioGroup, компонент CheckListBox. Компонент CheckListBox1 берем со страницы Additional Палитры Компонентов, осталь­ные - со страницы Standard.

4. Свойствам Caption компонентов RadioGroup1, RadioGroup2 и RadioGroup3 зададим значения ‘Начертание’, ‘Размер’ и ‘Цвет’ соответственно.

5. Войдем в свойство Items для каждого указанного выше компонента и щелкнем по кнопке с тремя точками. В появившемся окне StringList editor следует ввести имена переключателей. Для каждого переключателя выделяется одна строка.

Для компонента RadioGroup1 введем следующие строки:

обычный

курсив

полужирный

полужирный курсив

Для компонента RadioGroup2:

Для компонента RadioGroup3:

черный

зеленый

красный

синий

После завершения ввода нажимаем кнопку ОК.

6. Для всех трех рассматриваемых компонентов установим свойство ItemIndex рав­ным 0. Это означает, что в начале работы программы выделенным переключате­лем будет первый.

7. Для меток Label1 и Label2 свойство Caption установим равным ‘Атрибуты’ и ‘Об­разец’ соответственно.

8. Для компонента CheckListBox1 выберем свойство Items и введем названия вык­лючателей:

Зачеркнутый

Подчеркнутый

9. Для компонента Edit1 установим свойство Text равным: ‘АаВвБбФф’.

10. Перейдем к написанию обработчиков событий. Выполним двойной щелчок на ком­поненте RadioGroup1. В появившемся окне Редактора Кода введем операторы для обработчика события OnClick, которое возникает при выделении нового переклю­чателя на панели:

case RadioGroup1.ItemIndex of

0: Edit1.Font.Style:= [ ];

1: Edit1.Font.Style:= [fsltalic];

2: Edit1.Font.Style:= [fsBold];

3: Edit1.Font.Style:= [fsltalic,fsBold];

end;

CheckListBox1ClickCheck(Self);

 

Вызов обработчика CheckListBox1ClickCheck, который будет создан чуть позже, позволит нам учесть характеристики стиля шрифта, задаваемые при помощи списка выключателей CheckListBox1.

11. Для компонента RadioGroup2 введем следующие операторы в обработчик собы­тия

OnClick:

case RadioGroup2.ItemIndex of

0: Edit1.Font.Size:= 8;

1: Edit1.Font.Size:= 10;

2: Edit1.Font.Size:= 12;

3: Edit1.Font.Size:= 14;

end

12. Для компонента RadioGroup3 введем такие операторы в обработчик события

OnClick:

case RadioGroup3.ItemIndex of

0: Edit1.Font.Color:= clBlack;

1: Edit1.Font.Color:= clGreen;

2: Edit1.Font.Color:= clRed;

3: Edit1.Font.Color:= clBlue;
end

13. Для компонента CheckListBox1 напишем обработчик события OnClickCheck, ко­торое возникает, когда изменяется состояние какого-либо выключателя:

if CheckListBoxl.Checked[0]

then Edit1.Font.Style:= Edit1.Font.Style + [fsStrikeOut]

else Edit1.Font.Style:= Edit1.Font.Style - [fsStrikeOut];

if CheckListBox1.Checked[ 1 ]

then Edit1.Font.Style:= Edit1.Font.Style + [fsUnderline]

else Edit1.Font.Style:= Edit1.Font.Style -[fsUnderline];

14. Сохраним приложение, выполнив команду главного меню File|Save All. Запус­тим приложение на выполнение с помощью команды Run|Run.

Выделяя различные переключатели или задавая тот или иной выключатель, будем изменять характеристики текста в строке ввода.

Полный текст сформированного модуля.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: