´elisk´ Воскресенье, 19.05.2024, 00:21:17
Здраствуйте Гость | RSS


Меню сайта
Категории раздела
Мои статьи [9]
Поставьте оценку
Оцените мой сайт
Всего ответов: 38
INFOBAR

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

free counters

Информеры


Праздники сегодня

Главная » Статьи » Мои статьи

Графика в C++ Builder 6

Работа с графиками и диаграммами (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 более подробно, то сможете: удалять последние веденные значения, убирать добавлять сетку, менять цвета линий, менять толщину линий и так далее.

 

Категория: Мои статьи | Добавил: Rain (08.03.2011)
Просмотров: 11797 | Комментарии: 8 | Рейтинг: 1.0/1
Всего комментариев: 2
2 Алина  
0
Статья очень полезная, спасибо!. Подскажите пожалуйста как нарисовать вертикальную линии которая по х будет двигаться а по у нет??

1 Ирина  
0
Спасибо за статью!!!

Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright I.E.G. © 2024

    Бесплатный конструктор сайтов - uCoz