Учись программированию на C++ Builder бесплатно!
Содержание[Скрыть]

Компонент Chartfx, на странице ActiveX, представляет собой законченный редактор диаграмм со встроенной инструментальной панелью. Нажимая кнопки инструментальной панели пользователь может задавать новые данные, изменять тип диаграммы, сохранять диаграмму в файле с расширением .chf или загружать ее из аналогичного файла, копировать диаграмму в буфер обмена Clipboard и таким образом включать ее в другие документы, например, в документы Word и т.п.

Как и в других компонентах ActiveX, доступ к свойствам Chartfx во время проектирования может осуществляться с помощью Инспектора Объектов или щелчком правой кнопки мыши и выбором из всплывшего меню команды Properties (Свойства). При выборе этой команды открывается многостраничное диалоговое окно, позволяющее задать свойства компонента.

Свойства Chartfx

  • Свойство Series на странице Data Values диалога (в Инспекторе Объектов это свойство названо NSeries) обозначает число серий данных.
  • Свойство Points на той же странице диалога (в Инспекторе Объектов оно названо NValues) обозначает число значений по оси аргументов.
  • Страница диалога Elements позволяет задать какие-то характерные уровни (опции Value - Text), выделить цветом какие-то полосы уровней (опции From - То - Calar), задать текст в строке состояния (опции ID - Width - Text).
  • Прочие свойства позволяют задать тексты вверху диаграммы, внизу, слева, справа, задать координатные сетки и многое другое.

Следует обратить внимание на выбор шрифтов. Шрифты, естественно, надо выбрать такие, которые содержат символы кириллицы. При выборе шрифтов надо сначала в выпадающем списке Свойство выбрать надпись, для которой указывается шрифт, например, TopFont - шрифт надписи над диаграммой, а затем в окнах Шрифт, Начертание, Размер установить атрибуты шрифта. Подобную процедуру надо повторить для всех надписей.

Первая и вторая слева быстрые кнопки обеспечивают соответственно чтение и сохранение диаграммы. Диаграмма сохраняется в файле с расширением .xhf и может быть прочитана в последующих сеансах работы. Третья кнопка слева заносит диаграмму в буфер обмена Clipboard, откуда ее можно взять в каком-то другом приложении, например, в Word и вставить в документ. Кнопки в центральной части панели позволяют изменять тип диаграммы или графика. Вторая справа группа кнопок позволяет вводить на диаграмме или графике координатную сетку. Правая группа кнопок обеспечивает задание надписей на изображении, выбор шрифта надписей и т.п. Главной из этих кнопок является крайняя правая. Она вызывает выпадающее меню, содержащее, в частности, раздел Data Editor. Если выбрать этот раздел, вместо диаграммы можно увидеть окно редактора данных, отображаемых на графике или в диаграмме. Сделав двойной щелчок на том или ином числе, можно изменить его. После того, как были отредактированы данные, щелкните по второй справа кнопке инструментальной панели и снимите выделение с раздела Data Editor. После этого увидите диаграмму, отображающую введенные данные.

Пример построения диаграммы

{spoiler spoilerID,Показать код,Скрыть код}

float x[16][12];
float M[12], D[12], G[12];

int i, j;
for (i = 0; i < 16; i++)
	for (j = 0; j < 12; j++)
	{
		StringGrid1->RowHeights[i] = 20;
		StringGrid1->ColWidths[j] = 50;
		x[i][j] = 1.5*random(213) / 212;
		StringGrid1->Cells[j][i] = FloatToStrF(x[i][j], ffFixed, 5, 3);
	}

Series1->Clear(); Series2->Clear(); Series3->Clear();
Series4->Clear(); Series5->Clear(); Series6->Clear();
Series7->Clear(); Series8->Clear(); Series9->Clear();
Series10->Clear(); Series11->Clear(); Series12->Clear();
Series13->Clear();

Chartfx1->ThisSerie = 0;
Chartfx1->ThisColor = clRed;

Chartfx1->OpenDataEx(COD_XVALUES, 1, 12);
Chartfx1->OpenDataEx(COD_VALUES, 1, 12);

for (j = 0; j < 12; j++)
{
	for (i = 0; i < 16; i++)
		M[j] = M[j] + x[i][j];
	M[j] = M[j] / 16;
	Series1->AddXY(j + 1, M[j], "", clRed);
	Series2->AddXY(j + 1, x[0][j], "", clBlue);
	Series3->AddXY(j + 1, x[1][j], "", clBlue);
	Series4->AddXY(j + 1, x[2][j], "", clBlue);
	Series5->AddXY(j + 1, x[3][j], "", clBlue);
	Series6->AddXY(j + 1, x[4][j], "", clBlue);
	Series7->AddXY(j + 1, x[5][j], "", clBlue);
	Series8->AddXY(j + 1, x[6][j], "", clBlue);
	Series9->AddXY(j + 1, x[7][j], "", clBlue);
	Series10->AddXY(j + 1, x[8][j], "", clBlue);
	Series11->AddXY(j + 1, x[9][j], "", clBlue);
	Series12->AddXY(j + 1, x[10][j], "", clBlue);
	Series13->AddXY(j + 1, x[11][j], "", clBlue);

}
VtChart1->Column = 1;

for (j = 0; j < 12; j++)
{
	for (i = 0; i < 16; i++)
		D[j] += pow(x[i][j] - M[j], 2);

	D[j] /= 16;
	G[j] = sqrt(D[j]);

	Chartfx1->XValue[j] = j;
	Chartfx1->Value[j] = D[j];
	VtChart1->Row = j + 1;
	VtChart1->Data = FloatToStr(G[j] * 10);
}

Chartfx1->CloseData(COD_XVALUES);
Chartfx1->CloseData(COD_VALUES);

{/spoiler}

Поделиться