|
Определяет объект с широкими возможностями построения графиков (диаграмм).
Создание объекта
chrObj=new TChart(Parent);
Собственные свойства
|
Свойство
| Тип
| Описание
|
Заголовки
| [TYPE]
| [DESC]
|
Title
| TChartTitle
| верхний заголовок диаграммы
|
SubTitle
| TChartTitle
| верхний подзаголовок диаграммы
|
Foot
| TChartTitle
| нижний заголовок диаграммы
|
SubFoot
| TChartTitle
| нижний подзаголовок диаграммы
|
Оси
| [TYPE]
| [DESC]
|
AxisBehind
| Boolean
| отображать оси диаграммы позади серии
|
AxisVisible
| Boolean
| отображать оси диаграммы
|
BottomAxis
| TChartAxis
| нижняя ось диаграммы
|
LeftAxis
| TChartAxis
| левая ось диаграммы
|
RightAxis
| TChartAxis
| правая ось диаграммы
|
TopAxis
| TChartAxis
| верхняя ось диаграммы
|
DepthAxis
| TChartAxis
| ось глубины (плоскость Z), расположенная в правом нижнем углу диаграммы (по умолчанию невидима)
|
DepthTopAxis
| TChartAxis
| ось глубины (плоскость Z), расположенная в левом верхнем углу диаграммы (по умолчанию невидима)
|
Стены
| [TYPE]
| [DESC]
|
BackWall
| TChartWall
| задняя стена диаграммы
|
BottomWall
| TChartWall
| нижняя стена диаграммы
|
LeftWall
| TChartWall
| левая стена диаграммы
|
RightWall
| TChartWall
| правая стена диаграммы
|
Рамка
| [TYPE]
| [DESC]
|
Border
| TChartPen
| перо для отрисовки рамки вокруг панели компонента
|
BorderRound
| Number
| радиус закругления углов рамки вокруг панели компонента
|
Frame
| TChartPen
| перо для отрисовки рамки вокруг диаграммы
|
Отступы
| [TYPE]
| [DESC]
|
MarginBottom
| Number
| отступ снизу в единицах измерения, представленных свойством MarginUnits
|
MarginLeft
| Number
| отступ слева в единицах измерения, представленных свойством MarginUnits
|
MarginRight
| Number
| отступ справа в единицах измерения, представленных свойством MarginUnits
|
MarginTop
| Number
| отступ сверху в единицах измерения, представленных свойством MarginUnits
|
MarginUnits
| Enum
| единицы измерения отступов (см. ниже)
|
Фон и тень
| [TYPE]
| [DESC]
|
BackColor
| TColor
| цвет фона панели компонента
|
BackImage
| TChartImage
| фоновое изображение
|
BackImageInside
| Boolean
| ограничить вывод фонового изображения внутри области, указанной свойством Frame
|
BackImageMode
| Enum
| режим размещения фонового изображения (см. ниже)
|
BackImageTransp
| Boolean
| установить прозрачный режим вывода фонового изображения: прозрачный цвет определяется по цвету правой нижней точки фонового изображения
|
Gradient
| TChartGradient
| градиент для заполнения фона диаграммы
|
Shadow
| TChartShadow
| тень от панели компонента
|
Прокрутка и масштабирование
| [TYPE]
| [DESC]
|
AllowPanning
| Enum
| режим прокрутки диаграммы (см. ниже)
|
ScrollMouseButton
| Enum
| при установке свойства AllowPanning в значение true: кнопка мыши, используемая для прокрутки диаграммы (см. ниже)
|
Zoom
| TChartZoom
| свойства масштабирования диаграммы
|
3D-эффекты
| [TYPE]
| [DESC]
|
Chart3DPercent
| Number
| процентная величина 3D-эффектов отображения элементов компонента при значении свойства View3D=true: диапазон значений [0-100], по умолчанию значение 15
|
View3D
| Boolean
| отображать элементы диаграммы в трехмерном виде
|
View3DWalls
| Boolean
| отображать левую и нижнюю стены в трехмерном виде
|
Прочее
| [TYPE]
| [DESC]
|
Canvas
| TCanvas
| дескриптор графической канвы компонента диаграммы
|
ClipPoints
| Boolean
| включить отрисовку точек исключительно внутри диаграммы, отключив отрисовку ее внешних областей
|
Legend
| TChartLegend
| блок условных обозначений диаграммы
|
Monochrome
| Boolean
| выполнять всю отрисовку в черно-белом режиме
|
PrintProportional
| Boolean
| установить размеры печати пропорционально размерам на экране
|
Series[]
| TChartSeries
| индексированный массив серий диаграммы
|
|
Свойство MarginUnits
|
muPercent
| проценты от размеров панели компонента
|
muPixels
| пиксели (по умолчанию)
|
|
Свойство BackImageMode
|
pbmCenter
| по центру
|
pbmCustom
| по значениям свойств Left и Top
|
pbmStretch
| растянуть на всю доступную площадь
|
pbmTile
| замостить всю доступную площадь
|
|
Свойство AllowPanning
|
pmNone
| без прокрутки
|
pmHorizontal
| горизонтальная прокрутка
|
pmVertical
| вертикальная прокрутка
|
pmBoth
| оба варианта прокрутки
|
|
Стандартные свойства
Стандартные методы
Стандартные события
// Главная форма frm=new TForm(); frm.Caption="JS+ - визуальный компонент TChart"; frm.Width =900; frm.Height=675;
// Строка состояния stb=new TStatusBar(frm); stb.SimpleText=" Пример компонента TChart";
// Панель with (pnl=new TPanel(frm)) { BorderStyle=bsSingle; SetBounds(10,10,frm.ClientWidth-20,stb.Top-20); Color=clWhite; }
// TChart with (chr=new TChart(pnl)) { SetBounds(20,20,pnl.ClientWidth-30,pnl.ClientHeight-30); Color=0xFFFFE9.toTColor(); AllowPanning=pmBoth;// Включить прокрутку Zoom.Allow=true;// Включить масштабирование Zoom.Pen.Color=clAqua;// Цвет рамки масштабирования
// Отступы MarginTop=MarginRight=chr.MarginBottom=(MarginLeft=10)*2;
// Верхний заголовок with (Title) { Caption="Динамика рынка"; Font.Style=fsBold; // Тень от заголовка with (Font.Shadow) { Color=clLtGray; SmoothBlur=HorizSize=VertSize=2; Visible=true; } Visible=true; }
// Нижний заголовок with (chr.Foot) { Caption="Учетный период"; Visible=true; } // Рамка вокруг панели компонента with (Border) { Color=clGray; Visible=true; }
// Тень от панели компонента with (Shadow) { Color=clGray; SmoothBlur=HorizSize=VertSize=5; Visible=true; } }
// Задняя стена with (chr.BackWall) { // Изображение на стене with (Picture) { Mode=pbmCustom; Left=20; LoadFromFile(JSPlus.HelpDir+"IMAGE\\TBitmap\\Image.bmp"); } Visible=true; }
// Левая ось with (chr.LeftAxis) { Automatic=false; Maximum=8000; Grid.Color=clLtGray; Grid.Visible=true; with (Title) { Caption="Средняя цена"; Font.Color=clRed; } Visible=true; }
// Правая ось with (chr.RightAxis) { Automatic=false; Maximum=50000; Visible=true; with (Title) { Caption="Количество предложений"; Font.Color=clBlue; } Visible=true; }
// Нижняя ось chr.BottomAxis.Visible=true;
// Массив данных Include(JSPlus.HelpDir+"DATA\\Chart.lst");
// График цены srs=new TLineSeries(chr); srs.Color=chr.LeftAxis.Title.Font.Color; with (pnt=srs.Pointer) { Style=psCircle; HorizSize=VertSize=2; Frame.Visible=false; Visible=true; } srs.BeginUpdate(); for (i=0;i<data_lst.length;i++) { l=((a=data_lst[i].split("|")).length==3) ? a[2] : ""; srs.AddXY(i,parseFloat(a[0]),l); } srs.EndUpdate();
// График количества предложений srs=new TLineSeries(chr); srs.Color=chr.RightAxis.Title.Font.Color; srs.VertAxis=aRightAxis; srs.Pointer.Assign(pnt); for (i=0;i<data_lst.length;i++) srs.AddXY(i,parseFloat(data_lst[i].split("|")[1]));
frm.ShowModal();
|
var tab=20;
// Главная форма frm=new TForm(); frm.Caption="JS+ - визуальный компонент TChart"; frm.Width =900; frm.Height=675;
var srs_List=new Array( "TAreaSeries", "TArrowSeries", "TBarSeries", "TBubbleSeries", "TGanttSeries", "TFastLineSeries", "TLineSeries", "TPointSeries", "TPieSeries" );
var data_List=new Array( "10|болты", "40|винты", "20|гайки", "60|гвозди", "40|дюбели", "80|саморезы", "60|шайбы", "100|шурупы" );
// Строка состояния stb=new TStatusBar(frm);
// Кнопка Сохранить with (bt1=new TButton(frm)) { Caption="Сохранить"; Top=stb.Top-Height-tab; Hint="Сохранить изображение BMP в файл"; ShowHint=true; strTag="SAVE"; OnClick=btn_Click; }
// Кнопка Копировать with (bt2=new TButton(frm)) { Caption="Копировать"; Width=frm.TextWidth(Caption)+tab; Height=bt1.Height; Top=bt1.Top; Hint="Копировать изображение BMP в Буфер обмена"; ShowHint=true; strTag="COPY"; OnClick=btn_Click; }
bt1.Width=bt2.Width; bt1.Left=frm.ClientWidth-bt1.Width-tab; bt2.Left=bt1.Left-bt2.Width-tab;
// Панель закладок pgc=new TPageControl(frm); pgc.SetBounds(tab,tab,frm.ClientWidth-tab*2,bt1.Top-tab*2); pgc.OnChange=pgc_Change;
// Закладки for (i=0,ni=srs_List.length;i<ni;i++) { srs_id=(srs_str=srs_List[i]).replace("T","").replace("Series",""); with (tsh=new TTabSheet(pgc)) { Caption=srs_id; Color=clWhite; strTag=srs_str; }
// TChart with (chr=new TChart(tsh)) { SetBounds(15,15,tsh.ClientWidth-30,tsh.ClientHeight-30); MarginTop=MarginBottom=5; MarginRight=15; tsh.cmpTag=chr;
// Верхний заголовок with (Title) { Caption="Серия "+srs_str; Font.Style=fsBold; VertMargin=20; Visible=true; }
// Нижний заголовок with (chr.Foot) { Caption="Номенклатура"; Visible=true; } }
// Левая ось with (chr.LeftAxis) { with (Title){ Caption="Количество, шт."; Font.Color=srs_clr=clBlue; } Visible=true; }
// Нижняя ось with (chr.BottomAxis) { MinorTickLength=0; Visible=true; }
// Серия srs=eval("new "+srs_str+"(chr)"); srs.Color=srs_clr;
switch (srs_id) { case "Area": srs.AreaBrush=bsDiagCross; // Вертикальные линии with (srs.AreaLinesPen) { Color=clLtGray; Visible=true; } break;
case "Arrow": srs.ArrowHeight=srs.ArrowWidth=10; case "Bar": chr.BottomAxis.Labels=false; break;
case "FastLine": with (srs.Marks) { ShapeStyle=fosEllipse; ArrowLength=10; Style=smsValue; Visible=true; } srs.OnClick=srs_Click; srs.OnDblClick=srs_DblClick; break;
case "Pie": srs.DonutPercent=40; chr.Foot.Visible=false; case "Gantt": chr.LeftAxis.Labels= chr.BottomAxis.Labels=false; break;
case "Point": case "Line" : with (srs.Pointer) { Style=psCircle; Visible=true; } with (srs.Marks) { ArrowLength=15; Visible=true; } srs.OnGetMarkText=srs_GetMarkText; srs.OnClickPointer=srs_ClickPointer; }
// Заполнение серии данными srs.BeginUpdate(); for (j=0,k=1,nj=data_List.length;j<nj;k++,j++) { pnt_lst=data_List[j].split("|"); y=parseFloat(pnt_lst[0]); switch (srs_id) { case "Arrow" : srs.AddArrow (nj/2,45,k,y); break; case "Bubble": srs.AddBubble(k,y,9,pnt_lst[1]); break; case "Gantt" : srs.AddGantt (k-0.5,k+0.5,y,pnt_lst[1]); break; default: srs.AddXY(k,y,pnt_lst[1]); } } srs.EndUpdate();
// Масштабирование осей with (chr.LeftAxis) { Automatic=false; Minimum=0; Maximum=srs.MaxYValue(); } with (chr.BottomAxis) { Automatic=false; Minimum=0; Maximum=srs.MaxXValue()+1; } }
// Начальная серия pgc.ActivePageIndex=2;// TBarSeries pgc_Change(pgc);
frm.ShowModal();
// Обработчик события TButton::OnClick function btn_Click(btn) { var dlg,opr=btn.strTag,chr=pgc.ActivePage.cmpTag;
switch (opr) { case "COPY": chr.CopyToClipboardBitmap(); stb.SimpleText=" Изображение скопировано в Буфер обмена"; break; case "SAVE": with (dlg=new TSavePictureDialog(frm)) { Title="Сохранение изображения BMP в файл"; Options+=ofShareAware+ofCreatePrompt+ofOverwritePrompt; Filter="BMP-файлы (*.bmp)|*.bmp|Все файлы (*.*)|*.*"; DefaultExt="bmp"; InitialDir=JSPlus.TempDir; FileName="ChartImg.bmp"; }
if (dlg.Execute()) { chr.SaveToBitmapFile(dlg.FileName); stb.SimpleText=" Сохранен файл: "+dlg.FileName; } dlg.Delete(); } }
// Обработчик события T[Line,Point]Series::OnGetMarkText function srs_GetMarkText(srs,i,txt) { txt.Value="Метка №"+(i+1); }
// Обработчик события T[Line,Point]Series::OnClickPointer function srs_ClickPointer(srs,i,x,y) { stb.SimpleText=" Клик на указателе: №"+(i+1)+" ("+x+":"+y+")"; }
// Обработчик события TFastLineSeries::OnClick function srs_Click(srs,i,ms_button,shift,x,y) { stb.SimpleText=" Клик на серии: №"+(i+1)+" ("+x+":"+y+")"; }
// Обработчик события TFastLineSeries::OnDblClick function srs_DblClick(srs,i,m_button,shift,x,y) { stb.SimpleText=" 2-клик на серии: №"+(i+1)+" ("+x+":"+y+")"; }
// Обработчик события TPageControl::OnChange function pgc_Change(pgc) { var tsh=pgc.Pages[pgc.ActivePageIndex];
stb.SimpleText=" Выбрана серия "+tsh.strTag; }
|
Примечание
Прокрутка диаграммы активируется (при установленном в соответствующие значения свойстве AllowPanning) нажатием и перемещением правой кнопки мыши. Поменять кнопку мыши для прокрутки
диаграммы можно через свойство ScrollMouseButton.
Масштабирование диаграммы активируется (при установленном свойстве Zoom.Allow=true) нажатием и перемещением левой кнопки мыши из левого верхнего или нижнего положения в правое нижнее или
верхнее. Поменять кнопку мыши для масштабирования диаграммы можно через свойство Zoom.MouseButton.
Возврат диаграммы к исходному состоянию выполняется нажатием и перемещением левой кнопки мыши из правого верхнего положения в левое нижнее.
Для отображения осей DepthAxis и DepthTopAxis свойство диаграммы View3D и свойство Visible указанных осей должны иметь значение true.
Совместимость
C++ Builder/Delphi
|
JS+ | Руководство пользователя
|
|
|