|
Позволяет строить различные диаграммы и графики. Является контейнером объектов Series типа TChartSeries – серий данных, характеризующихся различными стилями отображения. Каждая серия будет соответствовать одной кривой на графике. Свойства: AllowPanning
Определяет возможность пользователя прокручивать наблюдаемую часть графика во время выполнения, нажимая правую кнопку мыши: pmNone – прокрутка запрещена; pmHorizontal – разрешена прокрутка только в горизонтальном направлении; pmVertical – только в вертикальном pmBoth – в обоих напрвлениях AllowZoom Позволяет пользователю изменять во время выполнения масштаб изображения, вырезая фрагменты диаграммы или графика курсором мыши. Title Определяет заголовок диаграммы Foot Определяет подпись под диаграммой. По умолчанию отсутствует. Текст подписи определяется подсвойством Text Frame Определяет рамку вокруг диаграммы Legend Легенда диаграммы – список обозначений MarginLeft, MarginRight MarginTop MarginButtom Значения левого, правого, верхнего и нижнего полей ButtomAxis LeftAxis RightAxis Эти свойства определяют характеристики соответственно нижней, левой и правой осей. Задание этих свойств имеет смысл для графиков и некоторых других типов диаграмм LeftWall ButtomWall BackWall Эти свойства определяют характеристики соответственно левой, нижней и задней граней области трехмерного отображения графика SeriesList Список серий данных, отображаемых в компоненте View3d Разрешает или запрещает трехмерное отображение диаграммы View3dOptions Характеристики трехмерного отображения Chart3DPersent Масштаб трехмерности (толщина диаграммы, ширина лент графика) Редактор диаграмм вызывается: Øкнопкой с многоточием рядом с названием свойства в инспекторе объектов; Øдвойным щелчком на компоненте Chart при проектировании формы; Øли выбором команды Edit Chart в контекстном меню компонента Chart при проектировании формы. Для задания отображаемых значений надо использовать методы серий Series: ØClear – очищает серию от занесенных ранее данных. ØAdd – позволяет добавить в диаграмму новую точку: Add(Const AValue:Double; Const ALabel:String; AColor:TColor) Параметр AValue соответствует добавляемому значению, параметрALabel – название, которое буде отображаться на диаграмме и в легенде, параметр AColor – цвет. ПараметрALabel необязательный, его можно задавать пустым:’’. ØAddXY – позволяет добавить новую точку в график функции: AddXY(Const AXValue, AYValue: Double; Const ALabel: String; AColor: TColor); Параметры AXValue иAYValue соответствуют аргументу и функции, параметры ALabel и AColor – те же, что и в методе Add. Создадим приложение, которое будет выводить круговую диаграмму и графики Sin и Cos: 1. Открыть новое приложение. Поместить на него 2 панели Panel, так чтобы они занимали всю область формы. Panel1.Align=alTop, Panel2.Align=alButtom, чтобы привязать из к верхней и нижней границам формы соответственно. Поместить на Panel1 компоненту Chart1 и на Panel2 компоненту Chart2. Задать свойству Align этих компонент значение alClient, чтобы они при изменении размера формы изменяли свои размеры вместе с панелями. 2.ерейти в редактор диаграмм Chart1. На закладке Chart, на закладке Series щелкнуть на кнопке Add – добавить серию. Вы попадаете в окно, в котором можно выбрать тип диаграммы или графика. В данном случае выберем Pie – круговая диаграмма. Закладка Titles – позволяет задавать заголовок диаграммы (Диаграмма продукции подразделений) Закладка Legend – позволяет задавать позволяет задавать параметры отображения легенды легенды диаграммы (списка обозначений) или вообще убирать ее с экрана. Закладка Panel – определяет вид панели, на которой отображается диаграмма. Закладка 3D – позволяет определить внешний вид диаграммы: сдвиг, наклон, толщину и т.д. Результат применения различных опций сразу отображается на условном примере. 3.В редакторе диаграмм Chart1, на закладке Series можно выбрать дополнительные характеристики отображения серии. На закладке Format для круговой диаграммы можно включить опцию Circled Pie, которая обеспечит при любом размере компонента Chart отображение диаграммы в виде круга. На закладке Marks кнопки группы Style определяют, что будет написано на ярлычках, относящихся к отдельным сегментам диаграммы: Value – значение, Percent – проценты, Label – названия данных и т.д. В приведенном примере включена кнопка Percent, а на закладке General установлен шаблон процентов, обеспечивающий отображение значений с точностью два десятичных знака. 4.сть возможность отображать одни и те же данные с помощью разных типов диаграмм. Для этого в редакторе диаграмм Chart1, на закладке Chart, нажав на закладке Series кнопку Clone, а затем для этой новой серии нажать кнопку Change (изменить) и выбрать другой тип диаграммы, например, Bar. Чтобы эти два разных типа диаграммы не появлялись на одном рисунке одновременно, нужно выключить индикатор этой новой серии на закладке Series, а потом предосватить пользователю выбрать тот или иной вид отображения диаграммы, например с помоью событи OnClick для диаграммы (ниже будет показано как это делается). 5.овторить описанные выше действия для задания свойств компонента Chart2: надо задать две серии и выбрать тип диаграммы Line. Для графиков на закладках Axis и Walls можно задать координатные характеристики осей и трехмерных граней графика. 6.Осталось написать код, задающий данные, которые нужно отображать. Для Chart1 зададим в круговой диаграмме некоторые константные данные, а в графиках для Chart2 – функции Sin и Cos. Процедуру загрузки данных можно включить просто в событие OnCreate формы: procedure TForm1.FormCreate(Sender: TObject); const A1 = 155; A2 = 251; A3 = 203; A4 = 404; var i: word; beginWith Series1 dobegin Clear; Add(A1, 'Цех 1', clYellow); Add(A2, 'Цех 2', clBlue); Add(A3, 'Цех 3', clRed); Add(A4, 'Цех 4', clPurple); end; Series2.Clear; Series3.Clear; for i := 0 to 100 do begin Series2.AddXY(0.02 * Pi * i, sin(0.02 * Pi * i), '', clRed); Series3.AddXY(0.02 * Pi * i, cos(0.02 * Pi * i), '', clBlue); end; end; Операторы Clear нужны, если в процессе работы приложения нужно обновлять данные. без этих операторов повторное выполнение методов Add и AddXY только добавит новые точки, не удалив прежние. Если для данных, отображаемых в диаграмме предусмотрены две серии разных видов Pie и Bar: Series1 и Series4, то в событие OnClick диаграммы Chart1 можно ввести процедуру, изменяющую по требованию пользователя тип диаграммы. Для того, чтобы загрузить данные в Series4 и сделать эту диаграмму в первый момент невидимой, можно вставить в конце приведенной ранее процедуры операторы: Series4.Assign(Series1);//переписывает данные из Series1 в Series4 Series4.Active:=false;//делает невидимой Series4 Смена типа диаграммы делает процедура: procedure TForm1.Chart1Click(Sender: TObject); begin Series1.Active:= not Series1.Active; Series4.Active:= not Series4.Active; end; Для компонента Chart2 свойства AllowPanning и AllowZoom установлены в true, что позволяет прокрычивать наблюдаемую часть графика вовремя выполнения, нажимая правую кнопку мыши, и изменять во время выполнения масштаб изображения, вырезая фрагменты диаграммы или графика курсором мыши. Компонент Chart также имеет метод Print, обеспечивющий печать. Предварительно может быть выполнен метод PrintPortrait, задающий книжную (вертикальную) ориентацию бумаги, или метод PrintLandscape, задающий альбомную (горизонтальную) ориентацию. Масштабировать размер печатаемого графика можно, вызвав предварительно метод PrintRect: procedure PrintRect ( Const R : TRect ) ; в котрором параметр R определяет размер области принтера, в которой осуществляется печать. unit UChart; interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Series, TeEngine, TeeProcs, Chart, ExtCtrls; typeTForm1 = class(TForm)Panel1: TPanel; Panel2: TPanel; Chart1: TChart; Chart2: TChart; Series1: TPieSeries; Series2: TLineSeries; Series3: TLineSeries; Series4: TBarSeries; procedure FormCreate(Sender: TObject); procedure Chart1Click(Sender: TObject); private { Private declarations} public { Public declarations } end; var Form1: TForm1; implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject); const A1 = 155; A2 = 251; A3 = 203; A4 = 404; var i: word; begin with Series1 do begin Clear; Add(A1, 'Цех 1', clYellow); Add(A2, 'Цех 2 ', clBlue); Add(A3, ' Цех 3 ', clRed); Add(A4, ' Цех 4', clPurple); end; Series4.Assign(Series1); Series4.Active := false; Series2.Clear; Series3.Clear; for i := 0 to 100 do begin Series2.AddXY(0.02 * Pi * i, sin(0.02 * Pi * i), '', clRed); Series3.AddXY(0.02 * Pi * i, cos(0.02 * Pi * i), '', clBlue); end; end;
procedure TForm1.Chart1Click(Sender: TObject); begin Series1.Active := not Series1.Active; Series4.Active := not Series4.Active; end; end.
|