Опубликован: 07.05.2010 | Уровень: специалист | Доступ: платный
Лекция 13:

DBChart. Графики и диаграммы

< Лекция 12 || Лекция 13: 12 || Лекция 14 >

Печать графика

Посмотреть, как реализована печать графика с предварительным просмотром можно уже на этапе конструирования, в редакторе серий. Для этого на вкладке Chart редактора серий перейдите на внутреннюю вкладку General и нажмите кнопку Print Preview. Вы получите такое окно:

Окно предварительного просмотра перед печатью

Рис. 13.8. Окно предварительного просмотра перед печатью

В этом окне можно указать используемый принтер, если он установлен на вашем компьютере, направление печати (книжный или альбомный вариант), установить поля, произвести дополнительную настройку и непосредственно дать команду на печать. Но конечный пользователь не имеет доступа к редактору серий, поэтому нам нужно вывести это окно программным путем.

Для этого установите кнопку на верхнюю панель, которую мы оставили специально для этого. На кнопке напишите "Печать". Щелкните по ней дважды, чтобы сгенерировать обработчик нажатия. Однако, прежде чем вписывать в обработчик код, нам необходимо подключить модуль Teeprevi в верхний раздел uses, потому что именно в этом модуле описана процедура ChartPreview(), вызывающая данное окно. Напомню, что для этого нужно после последнего подключенного модуля поставить запятую, после чего вписать

Teeprevi

а уже после этого модуля поставить точку с запятой. Код процедуры нажатия на кнопку будет содержать следующую строку:

ChartPreview(Form1, DBChart1);

Как видим, процедура ChartPreview() имеет два параметра: форму, содержащую график, и компонент DBChart (если вы изменили имена формы или графика, установленные по умолчанию, то и здесь нужно будет указать их). Сохраните проект, скомпилируйте его и попробуйте нажать на кнопку. У вас должно выйти окно печати.

Основные методы и свойства DBChart

На вкладке General, где мы вызывали окно печати, под кнопкой Print Preview имеется кнопка Export. Эта кнопка выводит следующее диалоговое окно:

Окно экспорта графика

Рис. 13.9. Окно экспорта графика

Как мы видим, график (диаграмму) можно экспортировать в буфер обмена или графический файл одного из четырех форматов. Формат BMP наиболее универсален, но файл получается большого размера. WMF - формат метафайлов Windows, который обеспечивает хорошее качество изображения при сравнительно небольшом размере файла. EMF - такой же формат, как и WMF, но более новый, используемый в 32-разрядных Windows. Последний TEE формат - специализированный для TDBChart(TChart) формат, который сохраняет не только сам график, но и все его настройки, что в дальнейшем позволяет загрузить ранее сохраненный график в компонент TDBChart.

Сохранение графика программным путем осуществляется следующими методами:

Procedure SaveToBitmapFile(const Filename: String);

Здесь график сохраняется в указанный в параметре файл формата BMP.

Procedure SaveToMetafile(const Filename: String);

График сохраняется в WMF формат.

Procedure SaveToMetafileEnh(const Filename: String);

График сохраняется в EMF формат.

Procedure SaveChartToFile(AChart:TCustomChart; const AName: String);

График сохраняется в специализированный формат. Первым параметром указывается сохраняемый график. Если вы будете использовать эту процедуру, не забудьте в раздел uses добавить модуль Teestore, где описан этот метод. Если вы сохранили график или диаграмму таким образом, то в дальнейшем вы можете и загрузить его методом

Procedure LoadChartFromFile(AChart:TCustomChart; const AName: String);

Следующая группа свойств позволяет вращать трехмерный график, изменять его масштаб и угол наклона, что позволяет нам в программе установить богатый инструментарий для пользователя, с помощью которого он сможет изменять вид графика. При разработке программы эти же инструменты доступны вам на вкладке Chart и на внутренней вкладке 3D. Многие возможности управления графиком зависят от того, включено ли свойство Orthogonal. При включенной ортогональности многие свойства становятся недоступными. Изменить состояние этого свойства можно просто:

DBChart1.View3DOptions.Orthogonal:= False;

Изменить масштаб можно, присвоив свойству Zoom целое число:

DBChart1.View3DOptions.Zoom:= 300;

Напомню, что нормальным масштабом является число 100. Пользователю можно дать возможность изменять масштаб от 1 до 500, еще больший масштаб будет уже неудобным.

Свойство Rotation отвечает за горизонтальное вращение графика, и может быть целым числом от 0 до 360, это число указывает количество градусов:

DBChart1.View3DOptions.Rotation:= 100;

Свойство Tilt отвечает за вертикальное вращение и также содержит целое число от 0 до 360 (градусов):

DBChart1.View3DOptions.Tilt:= 120;

Свойство Elevation содержит целое число, указывающее наклон графика. Число может быть также от 0 до 360:

DBChart1.View3DOptions.Elevation:= 50;

Свойство Perspective указывает соответственно, на перспективу графика. Это число удобней делать от 0 до 100:

DBChart1.View3DOptions.Perspective:= 30;

Попробуйте сделать в проекте новое окно для настройки графика, и с помощью события onChange ползунков TrackBar изменять соответствующие свойства:

 Окно настройки графика

Рис. 13.10. Окно настройки графика

Напомню, что компонент TrackBar хранит значение в свойстве Position, а минимальное и максимальное значение можно установить при проектировании в свойствах Min и Max. Чтобы из главного окна можно было вызывать окно с настройками, а из окна настроек менять параметры графика, оба модуля придется подключить друг к другу командой File ->Use Unit.

Еще раз напомню, что если ортогональность будет включена, пользователь сможет менять только масштаб графика, попытки изменить параметры вида графика ни к чему не приведут.

< Лекция 12 || Лекция 13: 12 || Лекция 14 >
Евгений Медведев
Евгений Медведев

В лекции №2 вставляю модуль данных. При попытке заменить name на  fDM выдает ошибку: "The project already contains a form or module named fDM!". Что делать? 

Анна Зеленина
Анна Зеленина

При вводе типов успешно сохраняется только 1я строчка. При попытке ввести второй тип вылезает сообщение об ошибке "project mymenu.exe raised exception class EOleException with message 'Microsoft Драйвер ODBC Paradox В операции должен использоваться обновляемый запрос'. 

Назерке Сейтсаданова
Назерке Сейтсаданова
Казахстан, Усть-Каменагорск, ВКГУ им. С.Аманжолова
Наталья Статченко
Наталья Статченко
Россия, Благовещенск