Многостраничные диаграммы

Нередко программист сталкивается с ситуацией, когда все точки графика невозможно физически отобразить на рабочей поверхности диаграммы. В таком случае допускается разбиение диаграммы на несколько страниц. Для этого прежде всего необходимо указать максимальное количество точек, размещаемых на одной странице:

 

propertyMaxPointsPerPage : LongInt;

 

Допустим, что график состоит из 95 точек и свойство MaxPointsPerPage равно 10, тогда последняя страница будет содержать всего 5 точек. Для того чтобы уточнить, как разместятся точки графика на последней странице, воспользуйтесь свойством:

 

propertyScaleLastPage : Boolean;

 

Если свойство установлено в false, точки графика будут равномерно «растянуты» по горизонтальной оси, в противном случае точки будут прижаты к левой границе диаграммы. Об общем количестве страниц, собранных в диаграмме, проинформирует свойство:

 

functionNumPages : Longint;

 

Индивидуальный номер страницы используется для идентификации страницы или для перехода к новой странице:

 

propertyPage : LongInt;

 

 

Два метода решают задачи перехода на страницу вперед и назад:

 

procedureNextPage;

procedurePreviousPage ;

 

О переходе к новой странице нам просигнализирует событие:

 

propertyOnPageChange : TNotifyEvent;

 

Например:

procedureTForm1.Chart1PageChange(Sender: TObject);

Begin

Label1.Caption := Format(‘Страница %d из %d’, [ (Sender as TChart).Page,

(Sender as TChart). NumPages]);

end;

 

Экспорт диаграмм

В классе TChart предусмотрен ряд методов, предназначенных для экспорта текущего изображения диаграммы в графический файл:

 

procedureSaveToBitmapFile(constFileName : string); //рисунок в формате *.bmp

procedureSaveToMetafile(constFileName : string); //рисунок в формате *.wmf

procedureSaveToMetafileEnh(constFileName : string); //рисунок в формате *.emf

 

Единственный параметр FileName предназначен для указания имени файла, в который будет сохранено изображение. Во время выполнения программы текущие данные могут быть сохранены во временный файл с именем AName:

 

procedureSaveChartToFile(AChart : TCustomChart; constAName : string);

Для загрузки данных из временного файла понадобится метод:

procedureLoadChartFromFile(varAChart : TCustomChart; constAName : string);

 

Для загрузки файла из сети Интернет по адресу, указанному в параметре URL, воспользуйтесь методом:

 

procedureLoadChartFromURL(varAChart : TCustomChart; constURL : string);

 

Отметим, что в классе TChart подготовлены специальные методы для работы с буфером обмена:

procedureCopyToClipboardBitmap;

procedureCopyToClipboardMetafile(Enhanced : Boolean);

 

Последний метод осуществляет копирование рабочей области диаграммы в буфер обмена Windows в виде метафайла. Формат метафайла определяется параметром Enhanced: false – формат *.wmf, true – формат *.emf. Для обеспечения доступа к указателю метафайла (с целью работы в Win32 API) потребуется функция:

 

functionTeeCreateMetafile(Enhanced : Boolean; constRect : TRect):TMetafile;

 

Функция создает новый метафайл и возвращает его указатель. Не забудьте уничтожить метафайл по завершении работы с ним.

 

varh : HMetafile;

. . .

h := Chart1.TeeCreateMetafile;

Try

....

Finally

DeleteObject( h );

end;

 

 

Печать диаграммы

Ориентация страницы печати осуществляется при помощи метода:

 

procedurePrintOrientation(AOrientation : TPrinterOrientation);

 

Может быть назначена портретная или альбомная ориентация. Другие способы:

 

procedurePrintPortrait; // портретная ориентация страницы

procedurePrintLandscape; // альбомная ориентация страницы

 

Поля страницы настраиваются при помощи свойства PrintMargins. По умолчанию все поля установлены в значение 15.

 

propertyPrintMargins : TRect;

 

Для отправки на печать всей клиентской части диаграммы вызовите метод:

 

procedurePrint;

В момент печати устанавливается в true свойство:

 

propertyPrinting : Boolean; //только для чтения

 

Следующие методы позволят распечатать диаграмму в строго определенном месте на странице:

 

procedurePrintRect(constR : TRect);

procedurePrintPartial(constR : TRect);

 

Место печати указывается в прямоугольной структуре R : TRect. Максимальный размер участка для печати составляет: (0, 0, Printer.PageWidth-1, Printer.PageHeight-1). Единственное отличие метода PrintPartial() от PrintRect() состоит в том, что он не вызывает методы принтера BeginDoc (новый документ) и EndDoc (конец документа).

При желании можно заставить диаграмму отобразить саму себя на любом объекте, обладающем свойством Canvas. Для этого пригодится метод:

 

procedureDraw(UserCanvas : TCanvas; constUserRect : TRect);

 

Во втором параметре надо установить границы прямоугольника, в пределах которого будет осуществляться прорисовка.

 

varUserRect : TRect;

Begin

UserRect.Left := 0;

UserRect.Right := Printer.PageWidth div 2;

UserRect.Top := 0;

UserRect.Bottom := Printer.PageHeight div 3;

Printer.BeginDoc;

Chart1.Draw(Printer.Canvas, UserRect);

Printer.EndDoc;

end;

 

Для печати в монохромном виде целесообразно установить в true свойство:

 

propertyMonochromePrinting : Boolean;

 

 








Дата добавления: 2016-03-15; просмотров: 578;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.016 сек.