Форум: "Основная";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизВопросы по TChart: 1) AddNull в TGanttSeries; 2) refresh TChart Найти похожие ветки
← →
vlad2 (2012-08-15 13:41) [0]Есть две проблемы.
Проблема 1.
Имеется, например, 3 серии. В 1-й нет одного значения, которое есть во 2 и 3-й сериях. В результате всё строится правильно, но на оси нет метки (Label) с этим значением (остальные есть, идут подряд нормально).
Для диаграмм (TBarSeries) нашел такое решение: добавляю в серию 1 пустую запись с недостающим значением через метод AddNull. В результате всё построено так же, но появилась нужная метка.
Для TGanttSeries такой номер не прошёл. После добавления пустой записи в серию (AddNull благополучно прошёл, не обругал) при построении графика вылезает ошибка: "List index out of bounds". Метод AddY даёт то же самое.
Вопросы по TGanttSeries и TBarSeries:
1. Как сделать (кроме AddNull), чтобы на оси обязательно были метки, если соответствующее значение есть хотя бы в одной серии?
2. Можно ли и как пользоваться AddNull в сериях TGanttSeries?
Проблема 2.
Старая проблема в runtime: после изменений некоторых свойств элементов графика (например, осей, легенды, коррекция размеров и т.п.) ПОСЛЕ создания серий TChart не обновляется. На принудительное использование методов типа Refresh, Repaint, Update ... не реагирует.
Нашёл только один способ обновления: CopyToClipboardBitmap, он работает, но если графиков строится подряд больше сотни, это заметно долго.
Неужели нет более "цивилизованного" и быстрого метода обновления TChart?
Если нужен конкретный пример, когда не работает, - изменение ColorWidth легенды после построения серий.
Спасибо.
← →
AV © (2012-08-15 13:48) [1]код показывайте или тестовый пример
← →
vlad2 (2012-08-15 15:30) [2]
> код показывайте или тестовый пример
К сожалению, этого, видимо, нельзя, т.к. программирую на C++ Builder. А вопрос задал здесь, не найдя ответов на сишных форумах, он общий, безотносительно к языку.
Схема примерно такая:
1. После того, как заполнил серии Гантта данными, добавляю одну пустую запись в 1 серию. После этого при попытке обратиться к CopyToClipboardBitmap возникает ошибка "List index out of bounds".
2. Изменение ColorWidth легенды должно приводить к изменению NumRows легенды, чего никогда не произойдёт, если не обновлять каждый раз TChart.
← →
sniknik © (2012-08-15 16:48) [3]> List index out of bounds
ошибка вполне определенная, обращение в список "за пределы" существующих записей этого списка.
← →
vlad2 (2012-08-15 18:23) [4]Спасибо, sniknik ©, Гугл-переводчик даёт то же самое :).
← →
Inovet © (2012-08-15 18:27) [5]> [4] vlad2 (15.08.12 18:23)
> Гугл-переводчик даёт то же самое :).
Так и смотри значение индекса перед вызовом.
← →
vlad2 (2012-08-15 18:42) [6]
> Так и смотри значение индекса перед вызовом
Какого индекса?
Перед вызовом chart.Series[k].AddNull() chart.Series[k].Count = 30
после - chart.Series[k].Count = 31, а после вызова chart.CopyToClipboardBitmap() - ошибка "List index out of bounds (30)".
Перед вызовом chart.Series[k].AddGantt(...) chart.Series[k].Count = 30
после - тоже chart.Series[k].Count = 31, а после вызова chart.CopyToClipboardBitmap() - никакой ошибки нет.
Вот я и не могу понять, в чём дело. Косяк в TGanttSeries при AddNull? В TBarSeries этого же не происходит.
← →
Германн © (2012-08-16 02:33) [7]
> vlad2 (15.08.12 18:42) [6]
>
>
> > Так и смотри значение индекса перед вызовом
>
>
> Какого индекса?
А отладчик для чего?
Поставь ВР на строке chart.CopyToClipboardBitmap и нажми F7.
← →
vlad2 (2012-08-16 17:00) [8]
> Поставь ВР на строке chart.CopyToClipboardBitmap и нажми
> F7
Если бы было так просто, не обращался бы на форум. CopyToClipboardBitmap - функция предка TChart, её код мне недоступен.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.083 c