| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Цвет графика в зависимости от значения |
| Автор: Дося 12.3.2006, 23:51 |
| Народ! Помогите, пожалуйста, замучался совсем... Вот график DBChart. ![]() Мне надо сделать, к примеру, если значение от 0 до 2, то столбец был зелёного цвета. Если от 2 до 4 - жёлтого, и т.д. Возможно ли это сделать?.. Очень нужно. Помогите, плиз... |
| Автор: tigger 13.3.2006, 14:45 |
| Используй метод ColorRange, он позволяет задавать цвет по числовому диапазону. |
| Автор: tigger 13.3.2006, 15:10 | ||
Ах да пример забыл:
|
| Автор: Дося 13.3.2006, 18:22 |
| Спасибо!!! Заработало!!! Очень благодарен! Респект! |
| Автор: Дося 13.3.2006, 21:12 | ||
Ещё небольшой/большой вопросик. ![]() Использую такой код:
Всё работает, но этот код только для первого столбца. А если пользователь динамически захочет менять кол-во столбцов? |
| Автор: _hunter 14.3.2006, 11:21 |
| для этого можно позаносить индексы/названия столбцов в тот же ComboBox и выбирать из него столбец для релактирования. для сохранения цветов в момент редактирования записывай полученные значения в файл ( с указанием индекса ) |
| Автор: Дося 14.3.2006, 11:31 |
У меня 6 DBChart'ов, в каждом по 2 столбца. Мне не надо для каждого по отдельности задавать цвета - для всех одинаково в зависимости от значения.![]() А как записывать в файл? Не мог бы примерчик привести. Тебе лекго говорить, когда в этом хорошо понимаешь. А я просто начинающий, поэтому мне трудновато... Пишу вот так: DBChart1->Series[0]->ColorRange(DBChart1->Series[0]->YValues,StrToInt(Edit1->Text),StrToInt(Edit2->Text),ColorBox1->Selected); DBChart2->Series[0]->ColorRange(DBChart2->Series[0]->YValues,StrToInt(Edit1->Text),StrToInt(Edit2->Text),ColorBox1->Selected); DBChart3->Series[0]->ColorRange(DBChart3->Series[0]->YValues,StrToInt(Edit1->Text),StrToInt(Edit2->Text),ColorBox1->Selected); DBChart4->Series[0]->ColorRange(DBChart4->Series[0]->YValues,StrToInt(Edit1->Text),StrToInt(Edit2->Text),ColorBox1->Selected); DBChart5->Series[0]->ColorRange(DBChart5->Series[0]->YValues,StrToInt(Edit1->Text),StrToInt(Edit2->Text),ColorBox1->Selected); DBChart6->Series[0]->ColorRange(DBChart6->Series[0]->YValues,StrToInt(Edit1->Text),StrToInt(Edit2->Text),ColorBox1->Selected); |
| Автор: _hunter 14.3.2006, 11:39 |
| как это: связанно с этим: ? или я чего-то пропустил? насчет записи в файл почитай справку/поищи на форуме TFileStream |
| Автор: Дося 14.3.2006, 11:47 |
| Понимать это следует так: пользователь может задавать любой интервал и к нему цвет. Значения - от 0 до 11 включительно. К примеру, пользователь захочет сделать два интервала - первый от 0 до 5 с жёлтым цветом, второй - от 6 до 11 с зелёным. Или три интервала надумает сделать. До этого я использовал такой код: DBChart1->Series[0]->ColorRange(DBChart1->Series[0]->YValues,0,2,clLime); DBChart1->Series[0]->ColorRange(DBChart1->Series[0]->YValues,2,4,clGreen); DBChart1->Series[0]->ColorRange(DBChart1->Series[0]->YValues,4,6,clYellow); DBChart1->Series[0]->ColorRange(DBChart1->Series[0]->YValues,6,11,clRed); DBChart2->Series[0]->ColorRange(DBChart2->Series[0]->YValues,0,2,clLime); DBChart2->Series[0]->ColorRange(DBChart2->Series[0]->YValues,2,4,clGreen); DBChart2->Series[0]->ColorRange(DBChart2->Series[0]->YValues,4,6,clYellow); DBChart2->Series[0]->ColorRange(DBChart2->Series[0]->YValues,6,11,clRed); DBChart3->Series[0]->ColorRange(DBChart3->Series[0]->YValues,0,2,clLime); DBChart3->Series[0]->ColorRange(DBChart3->Series[0]->YValues,2,4,clGreen); DBChart3->Series[0]->ColorRange(DBChart3->Series[0]->YValues,4,6,clYellow); DBChart3->Series[0]->ColorRange(DBChart3->Series[0]->YValues,6,11,clRed); DBChart4->Series[0]->ColorRange(DBChart4->Series[0]->YValues,0,2,clLime); DBChart4->Series[0]->ColorRange(DBChart4->Series[0]->YValues,2,4,clGreen); DBChart4->Series[0]->ColorRange(DBChart4->Series[0]->YValues,4,6,clYellow); DBChart4->Series[0]->ColorRange(DBChart4->Series[0]->YValues,6,11,clRed); DBChart5->Series[0]->ColorRange(DBChart5->Series[0]->YValues,0,2,clLime); DBChart5->Series[0]->ColorRange(DBChart5->Series[0]->YValues,2,4,clGreen); DBChart5->Series[0]->ColorRange(DBChart5->Series[0]->YValues,4,6,clYellow); DBChart5->Series[0]->ColorRange(DBChart5->Series[0]->YValues,6,11,clRed); DBChart6->Series[0]->ColorRange(DBChart6->Series[0]->YValues,0,2,clLime); DBChart6->Series[0]->ColorRange(DBChart6->Series[0]->YValues,2,4,clGreen); DBChart6->Series[0]->ColorRange(DBChart6->Series[0]->YValues,4,6,clYellow); DBChart6->Series[0]->ColorRange(DBChart6->Series[0]->YValues,6,11,clRed); По 4 интервала на каждый DBChart. Вот я и хочу, чтобы в настройках пользователь мог сам вручную устанавливать значения интервалов и к ним цвета. Может, я не в том направлениии думаю? Т.е. подскажите лучший подход? Спасибо! |
| Автор: _hunter 14.3.2006, 11:53 |
| берем два Edit' а ( можно spin ) за ним лепим панельку ( чтобы цвет смотреть можно было ) и кнопку "применить". в edit' ы заносятся начало/конец интервалов. по кнопке цвета меняются/пишутся в файла ( еще проверку на пересечение интервалов прилепить нужно ) как бы все... |
| Автор: Дося 14.3.2006, 12:04 |
А если так:![]() Как думаешь? |
| Автор: _hunter 14.3.2006, 12:18 |
| можно и так... |
| Автор: Дося 14.3.2006, 13:05 |
| А как в файл сохранить какой был выбран цвет? |
| Автор: _hunter 14.3.2006, 14:37 |
| как простой int |
| Автор: Дося 14.3.2006, 15:41 |
| Не получается у меня никак... |
| Автор: _hunter 14.3.2006, 15:53 |
| в чем, конкретно, проблемы? |
| Автор: Дося 14.3.2006, 16:00 |
Не доходит до меня, как сохранить всё в файл, а потом считать с него. Ну сделал я ту форму:![]() А что дальше делать, не представляю... Делаю int interval, cvet; double s, do; ... interval = StrToInt(Edit1->Text); s = StrToFloat(Edit2->Text); do = StrToFloat(Edit3->Text); cvet = ColorBox1->Items->IndexOf(ColorBox1->Selected); , но получаю -1. Помогите, плиз... |