Построение диаграмм в отчетах для WinForms
В этой статье описывается построение статистических диаграмм, одна из замечательных новых функций, появившихся в выпуске v3 2009 ComponentOne Reports for WinForms (отчетов ComponentOne для WinForms). Инструмент ComponentOne Reports for WinForms всегда поддерживал поля диаграмм благодаря своей расширяемой настраиваемой архитектуре полей. Поле Chart ("Диаграмма") реализовано как настраиваемое поле в сборке C1.Win.C1Report.CustomFields.2.dll, которая устанавливается с приложением конструктора отчетов, а также включается в качестве образца с полным исходным кодом (CustomFields). В этой статье будет показано, как можно настраивать поля диаграмм в отчетах с помощью приложения C1ReportDesigner. Приложение C1ReportDesigner устанавливается с инструментами ComponentOne Reports for WinForms и ComponentOne Reports for WPF. Диаграммы в простых отчетах Создать простую диаграмму очень легко. Необходимо выполнить следующие действия.
Например, приведенная ниже диаграмма была создана на основе таблицы продуктов NorthWind. В данном случае были установлены следующие свойства: DataX = "ProductName" Обратите внимание, что для этого типа диаграмм (Bar — линейчатая диаграмма) ось значений (по которой отображается поле DataY) расположена горизонтально, а ось категорий — вертикально. В данном случае к данным был также применен фильтр, чтобы ограничить количество отображаемых значений. Без фильтра диаграмма бы содержала слишком много значений, и вертикальная ось была бы нечитаемой. Другие полезные свойства диаграмм Кроме упомянутых выше свойств DataX и DataY, объект Chart предоставляет несколько других часто используемых свойств.
Эти свойства применяются ко всем типам диаграмм. Круговая диаграмма (Pie) имеет несколько дополнительных свойств.
Поле Chart фактически является оболочкой для элемента управления C1Chart, который предоставляет все службы построения диаграмм и имеет собственную исключительно обширную объектную модель. Если требуется дополнительно настроить поле Chart, можно с помощью свойства ChartControl получить доступ к внутреннему объекту C1Chart и использовать скрипты. Например, поле Chart не имеет свойства, управляющего расположением легенды. Но элемент управления C1Chart имеет такое свойство, и к нему можно получить доступ с помощью свойства ChartControl. Приведенный ниже скрипт заставляет располагать легенду под диаграммой, а не справа от нее.
Если назначить этот скрипт свойству OnLoad, то диаграмма будет выглядеть аналогично показанной на следующем рисунке. Остальные свойства, которые использовались для создания этой диаграммы: ChartType = Pie Диаграммы с несколькими рядами данных Чтобы создать диаграммы с несколькими рядами данных, просто установите в качестве значения свойства DataY строку, содержащую имена всех полей данных, которые следует включить в диаграмму, разделив их точкой с запятой. Например, чтобы создать диаграмму, показывающую цены на продукты и скидки, следует установить свойство DataY, как показано ниже. DataY = "UnitPrice;Discount" Если нужно задать цвет для отображения каждого ряда данных, установите в качестве значения свойства Palette список цветов, разделенных точкой с запятой. Например, если задать это свойство, как показано ниже, то на диаграмме ряд данных "UnitPrice" будет показан красным цветом, а ряд данных "Discount" — синим. Palette = "Red;Blue" Ряды данных с вычисляемыми значениями Свойство DataY не ограничено только именами полей. Строки, задающие ряды данных, фактически воспринимаются как полные выражения, которые вычисляются, как любое обычное поле в отчете. Например, чтобы создать диаграмму, показывающую фактическую цену каждого продукта, можно установить свойство DataY, как показано ниже. Диаграммы в сгруппированных отчетах Инструмент создания отчетов Reports for WinForms позволяет создавать отчеты с несколькими группами. Например, вместо использования списка всех продуктов в единственном простом отчете можно сгруппировать продукты по категориям. Каждая группа имеет верхний и нижний колонтитулы, позволяющие отображать сведения о группе, например заголовки и промежуточные итоги. Если добавить диаграмму в верхний колонтитул группы, то в диаграмме будут отображаться только данные для текущей группы. Если же добавить диаграмму в верхний или нижний колонтитул отчета, то в ней будут отображаться все данные отчета. Для иллюстрации здесь приводится диаграмма, отражающая определение отчета, которое показано в конструкторе отчета, и показывающая результат добавления поля Chart в верхний колонтитул отчета и в верхний колонтитул группы. Продолжим с примером, приведенным выше. Если добавить диаграмму в верхний колонтитул группы, а затем установить свойство DataX в значение "ProductName" и свойство DataY в значение "UnitPrice", то окончательный отчет будет содержать по одной диаграмме для каждой категории, и в каждой диаграмме будут отображаться цены единиц продуктов в этой категории. На следующих рисунках показаны снимки экрана отчета, который описывался выше, с верхними колонтитулами групп, диаграммами, которые в них содержатся, и несколькими подчиненными записями для иллюстрации. Диаграмма, показывающая цены единиц продуктов в категории "Beverages" (напитки) Диаграмма, показывающая цены единиц продуктов в категории "Condiments" (приправы) DataX = "Product Name" Поскольку диаграмма автоматически выбирает данные на основе раздела, в котором она содержится, создавать диаграммы в сгруппированных отчетах очень просто. Статистические диаграммы Поле Chart, включенное в выпуск v3 2009 инструмента Reports for WinForms, имеет новую мощную функцию, которая называется "aggregated charting" ("построение статистических диаграмм"). Эта функция позволяет создавать диаграммы, которые автоматически выполняют статистические вычисления со значениями данных (DataY), которые имеют одну и ту же категорию (DataX), используя выбранную агрегатную функцию (сумма, среднее, стандартное отклонение и т.п.). Для иллюстрации этой функции рассмотрим отчет "Invoices" ("Накладные"), который группирует данные по странам, клиентам и идентификаторам заказов. Общий результат отчета выглядит следующим образом: Теперь представим, что требуется добавить в каждый верхний колонтитул страны диаграмму, отображающую общее количество заказов, размещенных каждым клиентом в текущей стране. Можно было бы начать с добавления поля Chart в раздел верхнего колонтитула группы "Country" ("Страна"), а затем установить свойства DataX и DataY следующим образом: DataX = "CustomerName" Это не будет работать. Данные для каждой страны обычно включают несколько записей для каждого клиента, и диаграмма будет создавать по одной точке данных для каждой записи. Диаграмма не может угадать, что в действительности требуется добавить значения для каждого клиента в одну точку данных. Чтобы реализовать данный сценарий, мы добавили свойство Aggregate в поле Chart. Это свойство указывает диаграмме, как следует статистически обрабатывать значения, имеющие одну категорию, в одной точке данных диаграммы. В качестве значения свойства Aggregate можно задать выполнение любой из функций статистической обработки данных: sum (сумма), average (среднее), count (счетчик), maximum (максимальное значение), minimum (минимальное значение), standard deviation (стандартное отклонение) и variance (дисперсия). Продолжая работу с примером, теперь мы можем просто установить свойство диаграммы Aggregate в значение "Sum". Это приведет к тому, что диаграмма будет складывать все значения "ExtendedPrice" для записей, относящихся к одному заказчику, в одной точке данных. Результат показан ниже. Обратите внимание, что каждый клиент появляется только один раз. Значения, показанные в диаграмме, соответствуют сумме значений "ExtendedPrice" для всех полей с одним и тем же клиентом ("Customer"). Поскольку диаграмма отображается в поле верхнего колонтитула группы "Country", она повторяется для каждой страны, показывая всех клиентов в этой стране. Если поместить эту диаграмму в раздел верхнего колонтитула отчета, то в ней будет выполняться статистическая обработка данных по всему отчету. Например, предположим, что требуется начать отчет "Invoices" ("Накладные") с диаграммы, которая показывает общее количество, заказанное каждым продавцом. Чтобы это выполнить, можно добавить поле Chart в раздел верхнего колонтитула отчета и установить следующие свойства: DataX = "Salesperson" На следующем рисунке показана полученная диаграмма. Поскольку диаграмма помещена в разделе верхнего колонтитула отчета, отображаемые значения включают все страны и всех клиентов. Если переместить поле диаграммы из верхнего колонтитула отчета в верхний колонтитул группы "Country", то будут получены аналогичные диаграммы для каждой страны, показывающие общие объемы, реализованные каждым продавцом в данной стране. Построение статистических диаграмм — это мощная, но простая и легкая в использовании функция. Мы надеемся, что она вам понравится, и будет использоваться для создания впечатляющих отчетов! |
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.