JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

TSeriesMarks

- компонент диаграммы TChart
Компонент TChartSeries
Определяет серию маркеров, связанных с точками серии.
Доступ к объекту
Доступ к объекту выполняется прямым обращением к свойству Marks компонента TChartSeries и его потомков.

Собственные свойства
Свойство Тип Описание
Angle Number поворот маркера в градусах (возможны значения, кратные 90)
Arrow TChartPen перо, используемое для отрисовки линии, соединяющей маркер с точкой серии
ArrowLength Number длина линии, соединяющей маркер с точкой серии
BackColor TColor цвет фона маркера
Clip Boolean не выводить маркеры за пределами диаграммы
DrawEvery Number частота выводимых маркеров (1: все, 2: через один, 3: через два и т.д.)
Font TChartFont шрифт надписи маркера
Frame TChartPen перо, используемое для отрисовки рамки маркера
Gradient TChartGradient заливка фона маркера
Margins TMargins отступы от рамки маркера до его содержимого, px
MultiLine Boolean разрешить многострочные маркеры; для разделения текста метки на строки используется символ \n (код 13)
Picture TChartImage фоновое изображение на заднем плане маркера
Shadow TChartShadow тень от маркера
ShapeStyle Enum стиль внешнего оформления маркера (см. ниже)
Style Enum стиль внутреннего содержания маркера (см. ниже)
Transparency Number прозрачность маркера, %
Transparent Boolean прозрачное оформление маркера
Visible Boolean видимость серии маркеров

Свойство ShapeStyle
Значение Описание
fosRectangle прямоугольник (значение по умолчанию)
fosRoundRectangle прямоугольник с закругленными углами
fosEllipse эллипс

Свойство Style
Значение Описание
smsLabel метка
smsLabelPercent метка и значение в % от максимального по оси Y
smsLabelPercentTotal метка и значение в % от максимального и значение по оси Y
smsLabelValue метка и значение по оси Y
smsLegend текст в зависимости от свойства Legend.Style
smsPercent значение в % от максимального по оси Y
smsPercentRelative значение в % от первого по оси Y
smsPercentTotal значение в % от максимального и значение по оси Y
smsPointIndex индекс точки серии
smsSeriesTitle заголовок серии
smsValue значение по оси Y
smsXValue значение по оси X
smsXY значения по осям X и Y

Стандартные методы

Пример (JS+)
var tab=20;

// Главная форма
frm=new TForm();
frm.Caption="JS+ - компонент диаграммы TChart TSeriesMarks";
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;
}
Совместимость
C++ Builder/Delphi
См. также
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/Component/TChart/TChartSeries/TSeriesMarks.htm
© 2024,