На этом шаге мы рассмотрим создание полосы погрешностей.
Полоса погрешностей (планки погрешностей) представляет собой линии в точках построения, отображающие потенциальную ошибку (или степень недостоверности) каждой точки данных ряда данных. Полосы погрешностей строятся в точках ряда, могут иметь различные тип, толщину и цвет линий, а также величину отклонения, которая выражается как расстояние между точкой данных и конечными точками линии полосы погрешностей. Доступ к полосе погрешностей обеспечивает объект ErrorBars, принадлежащий элементу коллекции Series. Отображение полос погрешностей обеспечивается путем записи значения True в свойство HasErrorBars и последующей настройкой свойств объекта ErrorBars или использованием метода ErrorBar, принадлежащего элементу коллекции Series. Синтаксис вызова метода ErrorBar:
Series.ErrorBar(Direction, Include, Type, Amount, MinusValues);
В таблице 1 приведены возможные значения параметра Type.
Константа | Значение |
---|---|
xlErrorBarTypeCustom | -4114 |
xlErrorBarTypeFixedValue | 1 |
xlErrorBarTypePercent | 2 |
xlErrorBarTypeStDev | -4155 |
xlErrorBarTypeStError | 4 |
Рассмотрим следующие процедуры.
procedure TForm1.Button21Click(Sender: TObject); //Построение полосы погрешностей const xlLine=4; begin Chart.ChartType:=xlLine; Chart.SeriesCollection(1).ErrorBar( Direction:=1 {xlY}, Include:=1 {xlErrorBarIncludeBoth}, Type:=1 {xlErrorBarTypeFixedValue}, Amount:=200); end; procedure TForm1.CheckBox10Click(Sender: TObject); //Построение полосы погрешностей const xlLine=4; begin Chart.ChartType:=xlLine; Chart.SeriesCollection(1).HasErrorBars:=CheckBox10.Checked; if CheckBox10.Checked then begin Chart.SeriesCollection(1).ErrorBars.EndStyle:=2{xlNoCap}; Chart.SeriesCollection(1).ErrorBars.Border.ColorIndex:=13; Chart.SeriesCollection(1).ErrorBars.Border.Weight:=3; end; end;
Обе процедуры обеспечивают построение полос погрешностей, которые могут выглядеть так, как показано на рисунке 1.
Рис.1. Построение полосы погрешностей для графика
Обратите внимание на свойство EndStyle объекта ErrorBars. Оно определяет, будут ли отмечены концы отрезков (xlCap=1) или нет (xlNoCap=2).
В заключение приведем полный текст приложения.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, Spin, ExtDlgs, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; ComboBox1: TComboBox; Label1: TLabel; PageControl1: TPageControl; TabSheet1: TTabSheet; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Button6: TButton; SpinEdit1: TSpinEdit; ScrollBar1: TScrollBar; ComboBox2: TComboBox; Button7: TButton; ComboBox3: TComboBox; Label2: TLabel; TabSheet2: TTabSheet; CheckBox1: TCheckBox; Label3: TLabel; Edit1: TEdit; CheckBox2: TCheckBox; Button8: TButton; Button9: TButton; FontDialog1: TFontDialog; ColorDialog1: TColorDialog; TabSheet3: TTabSheet; Label9: TLabel; SpinEdit2: TSpinEdit; Label10: TLabel; ComboBox4: TComboBox; Panel1: TPanel; Label11: TLabel; Label12: TLabel; SpinEdit3: TSpinEdit; Label13: TLabel; Label14: TLabel; SpinEdit4: TSpinEdit; SpinEdit5: TSpinEdit; SpinEdit6: TSpinEdit; Label15: TLabel; Label16: TLabel; Panel2: TPanel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; SpinEdit7: TSpinEdit; SpinEdit8: TSpinEdit; SpinEdit9: TSpinEdit; SpinEdit10: TSpinEdit; TabSheet4: TTabSheet; Label23: TLabel; Label24: TLabel; ComboBox5: TComboBox; Label25: TLabel; Label26: TLabel; SpinEdit11: TSpinEdit; SpinEdit12: TSpinEdit; SpinEdit13: TSpinEdit; ListBox1: TListBox; Label27: TLabel; Button10: TButton; Button11: TButton; TabSheet5: TTabSheet; Button12: TButton; Button13: TButton; Label28: TLabel; Button14: TButton; Button15: TButton; Button16: TButton; TabSheet6: TTabSheet; ListBox2: TListBox; Label29: TLabel; Button17: TButton; Label30: TLabel; ComboBox6: TComboBox; Label31: TLabel; ComboBox7: TComboBox; Edit2: TEdit; Label32: TLabel; Label33: TLabel; ComboBox8: TComboBox; Label34: TLabel; SpinEdit14: TSpinEdit; TabSheet7: TTabSheet; Label35: TLabel; Button18: TButton; ListBox3: TListBox; ListBox4: TListBox; Label36: TLabel; Label37: TLabel; ComboBox9: TComboBox; SpinEdit15: TSpinEdit; Label38: TLabel; Label39: TLabel; ComboBox10: TComboBox; Label40: TLabel; ComboBox11: TComboBox; TabSheet8: TTabSheet; Button19: TButton; Button20: TButton; TabSheet9: TTabSheet; Label41: TLabel; Label42: TLabel; Label43: TLabel; CheckBox3: TCheckBox; CheckBox4: TCheckBox; Label44: TLabel; SpinEdit16: TSpinEdit; SpinEdit17: TSpinEdit; SpinEdit18: TSpinEdit; SpinEdit19: TSpinEdit; TabSheet10: TTabSheet; Label45: TLabel; Label46: TLabel; CheckBox5: TCheckBox; TabSheet11: TTabSheet; CheckBox6: TCheckBox; TabSheet12: TTabSheet; CheckBox7: TCheckBox; TabSheet13: TTabSheet; CheckBox8: TCheckBox; TabSheet14: TTabSheet; Label47: TLabel; Label48: TLabel; CheckBox9: TCheckBox; TabSheet15: TTabSheet; Button21: TButton; CheckBox10: TCheckBox; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure SpinEdit2Change(Sender: TObject); procedure ComboBox4Change(Sender: TObject); procedure SpinEdit3Change(Sender: TObject); procedure SpinEdit4Change(Sender: TObject); procedure SpinEdit7Change(Sender: TObject); procedure SpinEdit8Change(Sender: TObject); procedure SpinEdit11Change(Sender: TObject); procedure ComboBox5Change(Sender: TObject); procedure SpinEdit12Change(Sender: TObject); procedure SpinEdit13Change(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button12Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure Button15Click(Sender: TObject); procedure Button16Click(Sender: TObject); procedure ComboBox7Change(Sender: TObject); procedure ComboBox8Change(Sender: TObject); procedure SpinEdit14Change(Sender: TObject); procedure Button17Click(Sender: TObject); procedure ListBox2Click(Sender: TObject); procedure ComboBox6Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure PageControl1Change(Sender: TObject); procedure Button18Click(Sender: TObject); procedure ListBox3Click(Sender: TObject); procedure ListBox4Click(Sender: TObject); procedure ComboBox9Change(Sender: TObject); procedure SpinEdit15Change(Sender: TObject); procedure ComboBox10Change(Sender: TObject); procedure ComboBox11Change(Sender: TObject); procedure Button19Click(Sender: TObject); procedure Button20Click(Sender: TObject); procedure SpinEdit16Change(Sender: TObject); procedure SpinEdit17Change(Sender: TObject); procedure SpinEdit18Change(Sender: TObject); procedure CheckBox3Click(Sender: TObject); procedure CheckBox4Click(Sender: TObject); procedure SpinEdit19Change(Sender: TObject); procedure CheckBox5Click(Sender: TObject); procedure CheckBox6Click(Sender: TObject); procedure CheckBox7Click(Sender: TObject); procedure CheckBox8Click(Sender: TObject); procedure CheckBox9Click(Sender: TObject); procedure Button21Click(Sender: TObject); procedure CheckBox10Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation var E:variant; Chart:Variant; Legend:Variant; Axis:Variant; Series:Variant; DataLabels:Variant; PNTS,PNT:Variant; const xlLocationAsNewSheet=1; //Размещение диаграммы на новом листе xlLocationAsObject=2; //Размещение диаграммы на листе с данными {$R *.dfm} //Функция задания шрифта заголовка диаграммы Function SetFontRange(c:variant;font:Tfont):boolean; begin SetFontRange:=true; try c.Font.Name:=font.Name; if fsBold in font.Style then c.Font.Bold:=True // Жирный else c.Font.Bold:=False; // Тонкий if fsItalic in font.Style then c.Font.Italic:=True // Наклонный else c.Font.Italic:=False; // Наклонный c.Font.Size:=font.Size; // Размер if fsStrikeOut in font.Style then c.Font.Strikethrough:=True // Перечеркнутый else c.Font.Strikethrough:=False; // Перечеркнутый //xlUnderlineStyleSingle - Подчеркивание if fsUnderline in font.Style then c.Font.Underline:=2 else c.Font.Underline:=-4142; //xlUnderlineStyleNone - Подчеркивание c.Font.Color:=font.Color; // Цвет except SetFontRange:=false; end; end; procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и отображение окна begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание рабочей книги begin E.WorkBooks.Add; end; procedure TForm1.Button3Click(Sender: TObject); //Добавление диаграммы и получение ссылки на нее var i:Integer; const xl3DColumn=-4100; xlColumns=2; begin Randomize; for i:=1 to 6 do begin E.ActiveSheet.Cells(1,i):=i*(1+Random(50)); E.ActiveSheet.Cells(2,i):=i*(1+Random(50)); E.ActiveSheet.Cells(3,i):=i*(1+Random(50)); E.ActiveSheet.Cells(4,i):=i*(1+Random(50)); E.ActiveSheet.Cells(5,i):=i*(1+Random(50)); end; Chart:=E.Charts.Add; Legend:=Chart.Legend; //Ссылка на легенду Chart.ChartType:=xl3DColumn; Chart.SetSourceData(Source:=E.ActiveWorkbook.Sheets.Item['Лист1'].Range['A1:F5'], PlotBy:=xlColumns); end; procedure TForm1.Button4Click(Sender: TObject); //Перемещение диаграммы на лист с данными begin Chart.Location(Where:=xlLocationAsObject, Name:='Лист1'); Chart:=E.ActiveChart; Legend:=Chart.Legend; //Ссылка на легенду end; procedure TForm1.Button5Click(Sender: TObject); //Перемещение диаграммы на новый лист begin Chart.Location(Where:=xlLocationAsNewSheet); Chart:=E.ActiveChart; Legend:=Chart.Legend; //Ссылка на легенду end; procedure TForm1.ComboBox1Change(Sender: TObject); //Изменение типа диаграммы begin Chart.ChartType:=ComboBox1.ItemIndex+51; end; procedure TForm1.Button6Click(Sender: TObject); //Задание цвета заливки begin Chart.ChartArea.Fill.ForeColor.SchemeColor:= SpinEdit1.Value; end; procedure TForm1.Button7Click(Sender: TObject); //Одноцветная градиентная заливка begin Chart.ChartArea.Fill.OneColorGradient(ComboBox2.ItemIndex+1, ComboBox3.ItemIndex+1, ScrollBar1.Position*0.01); end; procedure TForm1.CheckBox1Click(Sender: TObject); //Показ/скрытие заголовка begin if CheckBox1.State=cbUnChecked then Chart.HasTitle:=False else begin Chart.HasTitle:=True; Chart.ChartTitle.Text:=Edit1.Text; end; end; procedure TForm1.CheckBox2Click(Sender: TObject); //Включение выключение тени begin Chart.ChartTitle.Shadow:=CheckBox2.Checked; end; procedure TForm1.Button8Click(Sender: TObject); //Задание шрифта begin if FontDialog1.Execute then SetFontRange(Chart.ChartTitle,FontDialog1.Font); end; procedure TForm1.Button9Click(Sender: TObject); //Задание цвета области Interior begin if ColorDialog1.Execute then Chart.ChartTitle.Interior.Color:=ColorDialog1.Color end; procedure TForm1.SpinEdit2Change(Sender: TObject); //Толщина линии области построения диаграммы begin Chart.PlotArea.Border.Weight:=SpinEdit2.Value; end; procedure TForm1.ComboBox4Change(Sender: TObject); //Устанавливаем тип линии границы ячейки begin Case ComboBox4.ItemIndex Of 0:Chart.PlotArea.Border.LineStyle:=1; //xlContinuous 1:Chart.PlotArea.Border.LineStyle:=-4115;//xlDash 2:Chart.PlotArea.Border.LineStyle:=4; //xlDashDot 3:Chart.PlotArea.Border.LineStyle:=5; //xlDashDotDot 4:Chart.PlotArea.Border.LineStyle:=-4118;//xlDot 5:Chart.PlotArea.Border.LineStyle:=-4119;//xlDouble 6:Chart.PlotArea.Border.LineStyle:=-4142;//xlLineStyleNone 7:Chart.PlotArea.Border.LineStyle:=13; //xlSlantDashDot End; end; procedure TForm1.SpinEdit3Change(Sender: TObject); //Толщина линии основания begin Chart.Floor.Border.Weight:=SpinEdit3.Value; end; procedure TForm1.SpinEdit4Change(Sender: TObject); //Задание цвета основания begin Chart.Floor.Border.Color:=RGB(SpinEdit4.Value, SpinEdit5.Value,SpinEdit6.Value); end; procedure TForm1.SpinEdit7Change(Sender: TObject); //Толщина линии стен begin Chart.Walls.Border.Weight:=SpinEdit7.Value; end; procedure TForm1.SpinEdit8Change(Sender: TObject); //Задание цвета стен begin Chart.Walls.Interior.Color:=RGB(SpinEdit8.Value, SpinEdit9.Value,SpinEdit10.Value); end; procedure TForm1.SpinEdit11Change(Sender: TObject); //Толщина линии легенды begin Legend.Border.Weight:=SpinEdit11.Value; end; procedure TForm1.ComboBox5Change(Sender: TObject); //Выбор вида штриховки begin Legend.Fill.Patterned(ComboBox5.ItemIndex+1); end; procedure TForm1.SpinEdit12Change(Sender: TObject); //Выбор цвета изображения begin Legend.Fill.ForeColor.SchemeColor:=SpinEdit12.Value; end; procedure TForm1.SpinEdit13Change(Sender: TObject); //Выбор цвета фона begin Legend.Fill.BackColor.SchemeColor:=SpinEdit13.Value; end; procedure TForm1.Button10Click(Sender: TObject); //Заполнение списка элементов легенды var i: Integer; begin ListBox1.Items.Clear; for i:=1 to Legend.LegendEntries.Count do ListBox1.Items.Add(IntToStr(i)); end; procedure TForm1.Button11Click(Sender: TObject); //Изменяем выбранный элемент Var LegendEntry,LegendKey: Variant; begin // Получаем ссылку на элемент легенды LegendEntry:=Legend.LegendEntries.item[ListBox1.ItemIndex+1]; // Получаем ссьшку на ключ легенды LegendKey:= LegendEntry.LegendKey; // Изменяем толщину пинии. LegendKey.Border.Weight:=4; // Изменяем цвет заливки LegendKey.Interior.Color:=RGB(200,50,0); // Получаем доступ к шрифту надписи и изменяем его. LegendEntry.Font.Size:=16; end; procedure TForm1.Button12Click(Sender: TObject); //Настройка оси значений const xlValue=2; var Border:variant; begin Axis:=Chart.Axes.Item(xlValue); // Получаем доступ к оси значений Border:=Axis.Border; // Получаем доступ к линии оси значений Border.Color:=RGB(200,0,0); // и настраиваем ее свойства Border.Weight:=4; end; procedure TForm1.Button13Click(Sender: TObject); // Показываем заголовок оси значений, получаем доступ // к нему и настраиваем его свойства var AxisTitle:variant; begin Axis.HasTitle:=True; AxisTitle:=Axis.AxisTitle; AxisTitle.Border.Color:=RGB(0,200,200); AxisTitle.Interior.Color:=RGB(200,200,0); AxisTitle.Caption:='Значения'; AxisTitle.Font.Size:=24; end; procedure TForm1.Button14Click(Sender: TObject); // Получаем доступ к меткам делений оси и настраиваем их свойства // (шрифт, формат числовых меток и направление текста (угол)) var TickLabels:variant; begin TickLabels:=Axis.TickLabels; TickLabels.Font.Size:=20; TickLabels.NumberFormat:='$0000'; TickLabels.Orientation:=0; end; procedure TForm1.Button15Click(Sender: TObject); // Получаем доступ к меткам делений оси и настраиваем их свойства // (толщину и цвет основных линий меток) var MajorGridlines:variant; begin Axis.HasMajorGridlines:=True; Axis.HasMinorGridlines:=False; MajorGridlines:=Axis.MajorGridlines; MajorGridlines.Border.Weight:=2; MajorGridlines.Border.Color:=RGB(0,0,0); end; procedure TForm1.Button16Click(Sender: TObject); // Показываем линии основных и промежуточных меток. const xlTickMarkCross=4; xlTickMarkInside=2; begin Axis.MajorTickMark:=xlTickMarkCross; Axis.MinorTickMark:=xlTickMarkInside; end; procedure TForm1.ComboBox7Change(Sender: TObject); //Задание горизонтального выравнивания begin case ComboBox1.ItemIndex of 0: DataLabels.HorizontalAlignment:=-4108; //xlHAlignCenter 1: DataLabels.HorizontalAlignment:=-4131; //xlHAlignLeft 2: DataLabels.HorizontalAlignment:=-4152; //xlHAlignRight end; end; procedure TForm1.ComboBox8Change(Sender: TObject); //Задание вертикального выравнивания begin case ComboBox2.ItemIndex of 0: DataLabels.VerticalAlignment:=-4107; //xlVAlignBottom 1: DataLabels.VerticalAlignment:=-4108; //xlVAlignCenter 2: DataLabels.VerticalAlignment:=-4160; //xlVAlignTop end; end; procedure TForm1.SpinEdit14Change(Sender: TObject); // Угол (направление) текста begin DataLabels.Orientation:=SpinEdit14.Value; end; procedure TForm1.Button17Click(Sender: TObject); //Заполнение рядов диаграмм var a: Integer; begin ListBox2.Items.Clear; for a:=1 to Chart.SeriesCollection.Count do ListBox2.Items.Add(Chart.SeriesCollection.Item(a).Name{IntToStr(a)}); end; procedure TForm1.ListBox2Click(Sender: TObject); //Выбор ряда begin Series:=Chart.SeriesCollection(ListBox2.ItemIndex+1); DataLabels:=Series.DataLabels; end; procedure TForm1.ComboBox6Change(Sender: TObject); //Выбор типа подписи var XlDataLabelsType: Integer; begin case ComboBox6.ItemIndex of 0: XlDataLabelsType:=6; //xlDataLabelsShowBubbleSizes 1: XlDataLabelsType:=4; //xlDataLabelsShowLabel 2: XlDataLabelsType:=5; //xlDataLabelsShowLabelAndPercent 3: XlDataLabelsType:=-4142;//xlDataLabelsShowNone 4: XlDataLabelsType:=3; //xlDataLabelsShowPercent 5: XlDataLabelsType:=2; //xlDataLabelsShowValue end; Series.ApplyDataLabels(Type:=XlDataLabelsType); //Выбор числового формата DataLabels.NumberFormat:=Edit2.Text; end; procedure TForm1.Edit2Change(Sender: TObject); //Выбор числового формата для отображения значений begin DataLabels.NumberFormat:=Edit2.Text; end; procedure TForm1.PageControl1Change(Sender: TObject); begin end; //--------------- Работа с отдельными точками procedure TForm1.Button18Click(Sender: TObject); //Заполнение рядов диаграмм var a: Integer; begin ListBox3.Items.Clear; for a:=1 to Chart.SeriesCollection.Count do ListBox3.Items.Add(Chart.SeriesCollection.Item(a).Name); end; procedure TForm1.ListBox3Click(Sender: TObject); //Выбор ряда и заполнение списка точек var a: Integer; begin Series:=Chart.SeriesCollection(ListBox3.ItemIndex+1); PNTS:=Series.Points; ListBox4.Items.Clear; for a:=1 to PNTS.Count do ListBox4.Items.Add(IntToStr(a){PNTS.Item(a).Name}); end; procedure TForm1.ListBox4Click(Sender: TObject); //Выбор точки begin PNT:=PNTS.Item(ListBox4.ItemIndex+1); end; procedure TForm1.ComboBox9Change(Sender: TObject); //Выбор типа подписи точки var XlDataLabelsType: Integer; begin case ComboBox9.ItemIndex of 0: XlDataLabelsType:=6; //xlDataLabelsShowBubbleSizes 1: XlDataLabelsType:=4; //xlDataLabelsShowLabel 2: XlDataLabelsType:=-4142;//xlDataLabelsShowNone 3: XlDataLabelsType:=2; //xlDataLabelsShowValue end; PNT.ApplyDataLabels(Type:=XlDataLabelsType); end; procedure TForm1.SpinEdit15Change(Sender: TObject); // Угол (направление) текста begin PNT.DataLabel.Orientation:=SpinEdit15.Value; end; procedure TForm1.ComboBox10Change(Sender: TObject); //Задание горизонтального выравнивания begin case ComboBox10.ItemIndex of 0: PNT.DataLabel.HorizontalAlignment:=-4108; //xlHAlignCenter 1: PNT.DataLabel.HorizontalAlignment:=-4131; //xlHAlignLeft 2: PNT.DataLabel.HorizontalAlignment:=-4152; //xlHAlignRight end; end; procedure TForm1.ComboBox11Change(Sender: TObject); //Задание вертикального выравнивания begin case ComboBox11.ItemIndex of 0: PNT.DataLabel.VerticalAlignment:=-4107; //xlVAlignBottom 1: PNT.DataLabel.VerticalAlignment:=-4108; //xlVAlignCenter 2: PNT.DataLabel.VerticalAlignment:=-4160; //xlVAlignTop end; end; //==================== Формулы ============================ procedure TForm1.Button19Click(Sender: TObject); //Получение формулы var S: String; begin Series:=Chart.SeriesCollection(1); S:=Series.Formula; MessageBox(handle,pchar(S),'',0); end; procedure TForm1.Button20Click(Sender: TObject); //Изменение формулы begin Series:=Chart.SeriesCollection(2); Series.FormulaLocal:='=РЯД(;;Лист1!A2:D2;3)'; end; //=================Объемные диаграммы==================== procedure TForm1.SpinEdit16Change(Sender: TObject); //Поворот в горизонтальной плоскости begin Chart.Rotation:=SpinEdit16.Value; end; procedure TForm1.SpinEdit17Change(Sender: TObject); //Поворот в вертикальной плоскости begin Chart.Elevation:=SpinEdit17.Value; end; procedure TForm1.SpinEdit18Change(Sender: TObject); //Перспектива begin Chart.Perspective:=SpinEdit18.Value; end; procedure TForm1.CheckBox3Click(Sender: TObject); //Изомерия begin Chart.RightAngleAxes:=CheckBox3.Checked; end; procedure TForm1.CheckBox4Click(Sender: TObject); //Автомасштаб begin Chart.AutoScaling:=CheckBox4.Checked; end; procedure TForm1.SpinEdit19Change(Sender: TObject); //Высота в процентах от нормальной высоты begin Chart.HeightPercent:=SpinEdit19.Value; end; procedure TForm1.CheckBox5Click(Sender: TObject); //Отображение линий серий на диаграмме. //Прежде установите тип диаграммы в xlColumnStacked! var ChartGroup:variant; begin ChartGroup:=Chart.ChartGroups.Item(1); ChartGroup.HasSeriesLines:=CheckBox5.Checked; if CheckBox5.Checked then begin //Установить ноые параметры ChartGroup.SeriesLines.Border.ColorIndex:=32; ChartGroup.SeriesLines.Border.Weight:=4; end; end; procedure TForm1.CheckBox6Click(Sender: TObject); //Отображение линий проекции const xlLine=4; var ChartGroup:variant; begin Chart.ChartType:=xlLine; ChartGroup:=Chart.ChartGroups.Item(1); ChartGroup.HasDropLines:=CheckBox6.Checked; if CheckBox6.Checked then ChartGroup.DropLines.Border.ColorIndex:=3; end; procedure TForm1.CheckBox7Click(Sender: TObject); //Отображение коридора колебания const xlLine=4; var ChartGroup:variant; begin Chart.ChartType:=xlLine; ChartGroup:=Chart.ChartGroups.Item(1); ChartGroup.HasHiLoLines:=CheckBox7.Checked; if CheckBox7.Checked then ChartGroup.HiLoLines.Border.ColorIndex:=5; end; procedure TForm1.CheckBox8Click(Sender: TObject); //Отображение полос понижения/повышения const xlLine=4; var ChartGroup:variant; begin Chart.ChartType:=xlLine; ChartGroup:=Chart.ChartGroups.Item(1); ChartGroup.HasUpDownBars:=CheckBox8.Checked; if CheckBox8.Checked then begin ChartGroup.UpBars.Border.ColorIndex:=7; ChartGroup.DownBars.Border.ColorIndex:=12; end; end; procedure TForm1.CheckBox9Click(Sender: TObject); //Задание линий выноски подписей данных диаграммы var Series:variant; begin Series:=Chart.SeriesCollection(1); Series.HasDataLabels:=CheckBox9.Checked; if CheckBox9.Checked then begin Series.Points(1).DataLabel.Left:=Series.Points(1).DataLabel.Left+20; Series.Points(3).DataLabel.Top:=Series.Points(3).DataLabel.Top+30; Series.HasLeaderLines:=CheckBox9.Checked; Series.LeaderLines.Border.ColorIndex:=5; end; end; procedure TForm1.Button21Click(Sender: TObject); //Построение полосы погрешностей const xlLine=4; begin Chart.ChartType:=xlLine; Chart.SeriesCollection(1).ErrorBar( Direction:=1 {xlY}, Include:=1 {xlErrorBarIncludeBoth}, Type:=1 {xlErrorBarTypeFixedValue}, Amount:=200); end; procedure TForm1.CheckBox10Click(Sender: TObject); //Построение полосы погрешностей const xlLine=4; begin Chart.ChartType:=xlLine; Chart.SeriesCollection(1).HasErrorBars:=CheckBox10.Checked; if CheckBox10.Checked then begin Chart.SeriesCollection(1).ErrorBars.EndStyle:=2{xlNoCap}; Chart.SeriesCollection(1).ErrorBars.Border.ColorIndex:=13; Chart.SeriesCollection(1).ErrorBars.Border.Weight:=3; end; end; end.
На следующем шаге мы рассмотрим линию тренда.