Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52

Всплывающий график TChart

25.07.2012, 08:49. Показов 2284. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане!
Возник вопрос, который я не могу решить в силу отсутствия достаточного опыта. На моей формt расположен TChart, как я могу сделать так, чтобы при наведении на элемент серии у меня появлялся другой график связанный с данным. Первый график отражает частоту использования определенного вектора, а второй график должен отображать сам вектор. Я так понимаю, что нужно начать с события OnMouseMove, а далее ума не приложу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2012, 08:49
Ответы с готовыми решениями:

TChart график
Здравствуйте! нужно нарисовать график косинусоиды. добавил компонент, выбрал Line. написал код: for(double i = 0; i< 10; i++)...

TChart и график
Подскажите как правильно нарисовать график с "+" и "-" осью для x и y через компонент Chart? Вот, что имею на данный момент: ...

Построить график в TChart
Построить график в TChart y=((x-a)(x-b))/((x-1)(x-2)). xmax, xmin, ymax, ymin,a,b,- должны вводится вручную в окна editbox.

11
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.07.2012, 09:50
А стоит ли при наведении? И потом перемещать за курсором? На клик по графику, я думаю, вот так можно сделать (или наподобие)__
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Chart30ClickSeries(TCustomChart *Sender,
      TChartSeries *Series, int ValueIndex, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
      Form2->Chart1->Series[0]->Assign(Series) ;
      Form2->ShowModal();
}
1
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
25.07.2012, 10:10  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
А стоит ли при наведении? И потом перемещать за курсором? На клик по графику, я думаю, вот так можно сделать (или наподобие)__
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Chart30ClickSeries(TCustomChart *Sender,
      TChartSeries *Series, int ValueIndex, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
      Form2->Chart1->Series[0]->Assign(Series) ;
      Form2->ShowModal();
}
Спасибо, попробую вечером.
А что значит Chart30ClickSeries? Меня интересует именно число. Это номер чарта, так?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.07.2012, 10:44
что значит Chart30ClickSeries?
Это обработчик события OnClickSeries (в моей программе, откуда скопировал, график назван Chart30).
1
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
25.07.2012, 17:00  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
А стоит ли при наведении? И потом перемещать за курсором? На клик по графику, я думаю, вот так можно сделать (или наподобие)__
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Chart30ClickSeries(TCustomChart *Sender,
      TChartSeries *Series, int ValueIndex, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
      Form2->Chart1->Series[0]->Assign(Series) ;
      Form2->ShowModal();
}
При компиляции возникается ошибка:
C++
1
[BCC32 Error] Симулятор_1.cpp(307): E2316 '_fastcall TForm1::Chart2ClickSeries(TCustomChart *,TChartSeries *,int,TMouseButton,TShiftState,int,int)' is not a member of 'TForm1'
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.07.2012, 17:31
Простите за банальность, но .. нужно выделить в редакторе на форме 1 график Chart2, в инспекторе объектов для него найти в Events тему OnClickSeries, двойным щелчком мыши открыть заготовку (обработчик) и туда вписать нужный код. Тогда это "событие" станет "мембером" формы1.
1
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
25.07.2012, 17:39  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Простите за банальность, но .. нужно выделить в редакторе на форме 1 график Chart2, в инспекторе объектов для него найти в Events тему OnClickSeries, двойным щелчком мыши открыть заготовку (обработчик) и туда вписать нужный код. Тогда это "событие" станет "мембером" формы1.
Извините, я только начал изучать С++ Спасибо за помощь.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.07.2012, 17:48
Пожалуйста. Дерзайте!
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
25.07.2012, 21:12  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Пожалуйста. Дерзайте!
С созданием членов разобрался, форму создал, но вот незадача - она выводится пустой

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Chart2ClickSeries(TCustomChart *Sender, TChartSeries *Series,
          int ValueIndex, TMouseButton Button, TShiftState Shift, int X,
          int Y)
{
        int dimension=Edit3->Text.ToInt();
        TForm *Form2= new TForm(this);
        TChart *Chart1=new TChart(this);
        Chart1->View3D=false;
        Chart1->SeriesList->Clear();
        TChartSeries *BarSeries = new TFastLineSeries(Chart1);
        for (int i=0; i < dimension; i++) {
             BarSeries->Add(w[1][i],i,clRed);
        }
        Form2->ShowModal();
}
Подскажите, пожалуйста, в чем причина


Добавил строку:
Chart1->Parent=Form2;
и появился чарт. Только он пока пустой.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.07.2012, 21:25
Причина в том, что Вы переучились. Я дилетант, самоучка, но многие вещи в Билдере понимаю правильнее. Вот, например, в Вашем примере бросается в глаза следующее: Вы создаете Chart1 в this (и не присваиваете ему "родителя"), а this у Вас ныне -- это Form1. А нужно:
C++
1
2
TChart *Chart1=new TChart(Form2);
Chart1->Parent = Form2;
. А я бы вообще не заморачивался такой чертовщиной, а просто создал Form2 из меню и разместил бы на нем Chart1 в "конструкторе" (на то ж и Билдер...).
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
26.07.2012, 16:56  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Причина в том, что Вы переучились. Я дилетант, самоучка, но многие вещи в Билдере понимаю правильнее. Вот, например, в Вашем примере бросается в глаза следующее: Вы создаете Chart1 в this (и не присваиваете ему "родителя"), а this у Вас ныне -- это Form1. А нужно:
C++
1
2
TChart *Chart1=new TChart(Form2);
Chart1->Parent = Form2;
. А я бы вообще не заморачивался такой чертовщиной, а просто создал Form2 из меню и разместил бы на нем Chart1 в "конструкторе" (на то ж и Билдер...).
Я с этого способа и начинал, но мои познания настолько скудны, что я не смог добавить новую форму в проект поэтому сделал так. Про parent я догадался и переделал, теперь проблема в пустом чарте.

Добавлено через 19 часов 25 минут
Господа, помогите, пожалуйста!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Chart2ClickSeries(TCustomChart *Sender, TChartSeries *Series,
          int ValueIndex, TMouseButton Button, TShiftState Shift, int X,
          int Y)
{
        int dimension=Edit3->Text.ToInt();
        TForm *Form2= new TForm(Form1);
        TChart *Chart5=new TChart(Form2);
        Chart5->Parent=Form2;
        Chart5->View3D=false;
        Chart5->SeriesList->Clear();
        Chart5->Show();
        TChartSeries *BarSeries = new TFastLineSeries(Chart5);
        BarSeries->Title="Aloha!";
        TButton *button=new TButton(Form2);
        for (int i=0; i < dimension; i++) {
            float q=w[1][i];
             BarSeries->Add(w[1][i],i,clRed);
        }
        int rty=345;
        Form2->ShowModal();
}
Почему-то получаемый график пуст...
0
2 / 2 / 0
Регистрация: 22.07.2012
Сообщений: 52
27.07.2012, 19:43  [ТС]
Всем добрый вечер!
Нашел наидебильнейшую ошибку в приведенном коде - не достает одной строки перед циклом:
C++
1
Chart5->AddSeries(BarSeries)
Теперь все работает.
Спасибо за помощь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.07.2012, 19:43
Помогаю со студенческими работами здесь

График в TChart заштрихован
Рисую на Image эллипс (ну или что-то на него похожее :)), при этом точки графика заносятся в массив, с помощью которого строится этот же...

Нарисовать график TChart
Есть данные в Edit1, Edit2, ... Как сделать чтобы данные из Edit'ов использовались TChart'ом для построения графика?

График функции в TChart
Помогите сделать график такой функции в TChart y=2*(sin^3 (x)) + cos(3(x-(pi/6))

График с помощью TChart
Доброго времени суток. Дело вот в чём, нужно построить график с помощью TChart-а. График простой (одна серия данных Х и У). Никак не могу...

График с использованием компонента TChart
Добрый вечер, работаю в С++ Builder 6, возникла проблема построения графика по доходности вклада на заданную дату. Изначально записаны в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru