Календарь на Июнь 2024 года: calendar2008.ru/2024/iyun/
Навигация
Главная »  Новости 

Работа с графиками и диаграммами (TChart, Series) (исходники)


Источник: Realcoding
Сегодня мы поговорим о рисовании графиков с помощью C++Builder. Эту тему я решил затронуть потому, что на днях пришлось быстро написать программу для того же самого рисования графиков, и я подумал что, наверное, не одному мне это пригодится.

Итак, меньше слов - больше дела, начнем:
Для работы с графиками и диаграммами в C++Builder существует компонент TChart (вкладка Additional), вот его мы и положим на форму. Далее если нажать на Chart1 правой кнопкой мыши, и выбрать Edit Chart… , то Вы увидите окно настроек графика, стоит заметить, что график можно настраивать и изменять параметры и в ходе выполнения программы, тоесть его настройка на ограничивается одним окошком. Первая закладка окна настройки называется Series, нажмите Add(Добавить), и откроется окно выбора: можете добавить разные линии столбцы и тому подобные вещи. Давайте выберем линию (на странице выбора - Line), вы сразу увидите, что наш Chart1 заполнила линия, значения выбираются случайные, но нажмите F9 - и вы ее не увидите! Дальше сделаем так, что бы мы смогли увидеть нашу линию в процессе работы программы.
Давайте положим на форму кнопку (Button) и напишем для нее такой обработчик события:
void __fastcall TForm1::Button1Click(TObject *Sender) { Series1->Add(13,22,clRed); } 
Теперь попробуйте откомпилировать программу(F9) и нажать кнопку(Button) - вы увидите нашу линию!
Но тут есть один очень важный момент, в обработчике события мы работали уже не с Chart1, а с Series1, это очень важно.
Замечу, если линий будет больше чем одна, тоесть Вы создадите Series2, Series3, то и работать в коде вы будете тоже с ними.
Давайте усложним немного нашу программу и сделаем ее динамичней.
На форму добавляем два компонента TEdit - в них мы будем вводить значения по оси Y и Х. Для кнопки изменяем обработчик события на такой:  
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 более подробно, то сможете: удалять последние веденные значения, убирать добавлять сетку, менять цвета линий, менять толщину линий и так далее.



 

 Третья мировая война ведется за лидерство в нанотехнологиях.
 Управление отношениями с клиентами(СRM) (документация).
 Роль Web-дизайна в разработке эффективной e-commerce-стратегии.
 Киберпреступники обокрали московский завод на 8 млн рублей.
 Программы лицензирования СА Technologies.


Главная »  Новости 

© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено.