Вопрос про TChart. Где про него почитать?
Модератор: Модераторы
Вопрос про TChart. Где про него почитать?
Интересует построение графиков по данным из БД.
У меня есть книжка по Delphi - там примерно 20 страниц про этот компонент, но вопрос работы с БД не освещается вообще. В интернете находятся только вопросы на форумах, толковых статей нет (в лучшем случае повторяют то, что есть у меня в книге).
Я попробовал освоить методом научного тыка.
Кинул компонент TChart, TQuery, TDataSource, TDBChartSource, два раза кликнул по TChart, в появившемся окне нажал "Добавить", добавилась новая серия, в свойствах серии указал Source - DBChartSource1, написал текст запроса. При запуске - ошибка "List index (0) out of bounds". Что делать дальше - вообще не понятно.
Пошлите меня куда-нибудь, где матчасть можно изучить...
У меня есть книжка по Delphi - там примерно 20 страниц про этот компонент, но вопрос работы с БД не освещается вообще. В интернете находятся только вопросы на форумах, толковых статей нет (в лучшем случае повторяют то, что есть у меня в книге).
Я попробовал освоить методом научного тыка.
Кинул компонент TChart, TQuery, TDataSource, TDBChartSource, два раза кликнул по TChart, в появившемся окне нажал "Добавить", добавилась новая серия, в свойствах серии указал Source - DBChartSource1, написал текст запроса. При запуске - ошибка "List index (0) out of bounds". Что делать дальше - вообще не понятно.
Пошлите меня куда-нибудь, где матчасть можно изучить...
В каталоге lazarus\components\tachart\demo\ имеется куча демок. Ковыряйте.
Да, ну и Lazarus обновить бы не мешало.
Да, ну и Lazarus обновить бы не мешало.
Climber писал(а):При запуске - ошибка "List index (0) out of bounds". Что делать дальше - вообще не понятно.
Хоть мой хрустальный шар сегодня мутноват, всё же могу предположить, что у DBChartSource
не указаны поля FieldX и FieldY.
Это, кстати, не повод для TChart вылетать с ошибкой -- исправил в r30444, номинировал в back-port.
Максим писал(а):Да, ну и Lazarus обновить бы не мешало.
Это точно.
Ask писал(а):Climber писал(а):При запуске - ошибка "List index (0) out of bounds". Что делать дальше - вообще не понятно.
Хоть мой хрустальный шар сегодня мутноват, всё же могу предположить, что у DBChartSource
не указаны поля FieldX и FieldY.
Это, кстати, не повод для TChart вылетать с ошибкой -- исправил в r30444, номинировал в back-port.Максим писал(а):Да, ну и Lazarus обновить бы не мешало.
Это точно.
С хрустальным шаром все ОК - мой метод научного тыка эти поля не осилил. Лазарус, кстати, у меня последний (0.9.30).
Только вот эти поля все равно не спасли. Я хотел сделать PieChart, сделал запрос, который возвращает столбцы "Сумма" и "Категория". Как ни заполняй поля FieldX и FieldY, ответ один: "Field "Категория" is invalid float" или что-то в этом роде.
Ask писал(а):Лазарус, кстати, у меня последний (0.9.30).
Хм. Тогда советую обновить подпись
Я хотел сделать PieChart, сделал запрос, который возвращает столбцы "Сумма" и "Категория". Как ни заполняй поля FieldX и FieldY, ответ один: "Field "Категория" is invalid float" или что-то в этом роде.
Я ведь почему про хрустальный шар говорил -- надо в таких случаях постить пример проекта, иначе приходится угадывать, где ошибка.
На этот раз, из сообщения можно предположить, что в поле "Категория" записаны не вещественные числа, а, например, строки,
и поэтому использовать его в качестве Y не получится. Кроме того, у PieChart вообще нет координаты X.
Так что предлагаю установить FieldY=Сумма FieldText=Категория
Ask писал(а):Я ведь почему про хрустальный шар говорил -- надо в таких случаях постить пример проекта, иначе приходится угадывать, где ошибка.
Заглядывать в хрустальный шар не пришлось бы, если бы мне сразу дали хотя бы примерное направление, где почитать про работу TChart + БД. Хотя что-то мне уже подсказывает, что такого в природе не существует.
Но оно таки заработало!
Запрос возвращает числа в столбце "Сумма" и подписи в столбце "Категория". Я сделал FieldY = "Сумма" и FieldText = "Категория", FieldX оставил пустой.
Теперь надо разобраться с легендой...
- alexs
- долгожитель
- Сообщения: 4069
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Climber писал(а):Хотя что-то мне уже подсказывает, что такого в природе не существует.
Но оно таки заработало!
Вот вам и карты в руки. Пол свежим следам написать манул - как вы добились, чтобы оно заработало...
alexs писал(а):Climber писал(а):Хотя что-то мне уже подсказывает, что такого в природе не существует.
Но оно таки заработало!
Вот вам и карты в руки. Пол свежим следам написать манул - как вы добились, чтобы оно заработало...
Весь мануал - в этом топике, мне добавить нечего
Вот когда до конца разберусь - тогда, может быть...
Кстати: диаграмма выглядит не очень красиво, это можно как-то исправить? Ну то есть проблема решится только созданием потомка или можно с событиями поколдовать?
Climber писал(а):Вот когда до конца разберусь - тогда, может быть...
Было бы неплохо
Climber писал(а):диаграмма выглядит не очень красиво, это можно как-то исправить?
Это можно прямо сразу на башорг. И никто ведь не поверит, что программист написал, а не заказчик.
Пожалуйста, поконкретнее.
Давно мечтаю попасть на башорг. Не берут
Вот пример того, что есть и чего хочется
Вот пример того, что есть и чего хочется
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Climber писал(а):Вот пример того, что есть и чего хочется
Ого. Тут не в наследовании дело -- нужно найти код, который умеет рисовать такие
эффекты. Это ведь не просто градиент, а хитрое сочетание.
Могу добавить event в TPieSeries аналогично тому, как сделано в TBarSeries.
Метки нужны именно внутри?
Метки внутри не нужны, это просто такая диаграмма попалась. Просто хотел показать красивую градиентную заливку. На самом деле, даже Excel настолько красиво не умеет, так что я не особо расстраиваюсь. У меня была идея рисовать такие штуки с помощью OpenGL, только надо придумать способ, как это правильно организовать..
На самом деле, достаточно просто добавить антиалиасинг...
На самом деле, достаточно просто добавить антиалиасинг...
достаточно просто добавить антиалиасинг
Уже есть.
См. aggpasdemo и bgrademo, а под Qt -- просто basicdemo.
2 Climber
Могу посоветовать только сделать свои компоненты. Но не нужно "заморачиваться" с OpenGL. Используйте векторную отрисовку. Например, в SVG или WMF. Это не сложно, но довольно муторно, если захотите "воспроизвести" TChart'ы полностью.
"Отрисовать" затем все можно через TImage.
Если начнете писать, то могу попробовать присоединиться.
PS. Моя проблема сейчас - "рендер" RTF-форматированного текста в WMF или SVG. Вот это действительно сложно
Могу посоветовать только сделать свои компоненты. Но не нужно "заморачиваться" с OpenGL. Используйте векторную отрисовку. Например, в SVG или WMF. Это не сложно, но довольно муторно, если захотите "воспроизвести" TChart'ы полностью.
"Отрисовать" затем все можно через TImage.
Если начнете писать, то могу попробовать присоединиться.
PS. Моя проблема сейчас - "рендер" RTF-форматированного текста в WMF или SVG. Вот это действительно сложно
