Работа с
графиками и диаграммами (TChart, Series)
Для работы с графиками и диаграммами в
C++Builder существует компонент TChart (вкладка Additional).Кладем его на форму.Также кладем 2 эдита (Edit1 и Edit2) и кнопку Button1; В обработчике кнопки Button1 пишем: if(Edit1->Text == "") { ShowMessage("Вы не ввели значение Y !"); return ; } if(Edit2->Text == "") { ShowMessage("Вы не ввели значение X !"); return ; }
int y; int x; y = Edit1->Text.ToInt(); x = Edit2->Text.ToInt();
Series1->Add(y,x,clBlue);
Edit1->Text = ""; Edit2->Text = "";
Но компилироваться это не будет. Для этого надо кликнуть на компоненте TChart, который на форме правой кнопкой и выбрать Edit Chart. В вкладке Chart на страничке Series(она по умолчанию) нажимаем на кнопку Add и выбираем вид графика который нам нужен. Для примера выберем линию. Нажимаем Ок и потом Close. Теперь компилируем. В Эдиты вводим точки и жмем Button (например 1 и 3, 4 и 7, и т.д.)
Не забудьте снять галочку 3D для обычных графиков
//---------------------Полный код нашего приложения -----------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Edit1->Clear(); //очищаем эдит1
Edit2->Clear(); //очищаем эдит2
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(Edit1->Text == "")
{
ShowMessage("Вы не ввели значение Y !");
return ;
}
if(Edit2->Text == "")
{
ShowMessage("Вы не ввели значение X !");
return ;
}
int y;
int x;
y = Edit1->Text.ToInt();
x = Edit2->Text.ToInt();
Series1->Add(y,x,clBlue);
Edit1->Text = "";
Edit2->Text = "";
}
//---------------------------------------------------------------------------
Разберем написанное:
Сначала мы описали проверки, ввел ли пользователь хоть какие-то данные Х и Y.
if(Edit1->Text == "")
{
ShowMessage("Вы не ввели значение Y
!");
return ;
}
if(Edit2->Text == "")
{
ShowMessage("Вы не ввели значение X !");
return ;
}
Далее мы указали две переменных х и y.
Но тут есть один важный момент, просто присвоить х = Edit1->Text ,
нельзя.
Надо конвертировать AnsiString в Int32:
y = Edit1->Text.ToInt();
x = Edit2->Text.ToInt();
Тоесть мы представляем текст Едита, как число.
А дальше все похоже на наш первый пример: Series1->Add(13,22,clRed);
Только вместо готовых чисел, мы добавляем х и у которые
пишем в Едиты. Откомпилируйте программу и увидите, как прорисовывается линия по
ходу добавления туда значений.
Если разберетесь в TChart более подробно, то сможете: удалять последние
веденные значения, убирать добавлять сетку, менять цвета линий, менять толщину
линий и так далее.
|