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.
Выделяя различные переключатели или задавая тот или иной выключатель, будем изменять характеристики текста в строке ввода.
Полный текст сформированного модуля.