Delphi
имеет стандартный объект для доступа к принтеру - TPRINTER, находящийся в
модуле PRINTERS. В этом модуле имеется переменная Printer:Tpinter, что
избавляет от необходимости описывать свою. Он позволяет выводить данные на
печать и управлять процессом печати. Правда, в некоторых версиях Delphi 1 он
имеет "глюк" - не работают функции Draw и StrethDraw. Но эта проблема
поправима - можно использовать функции API. Далее приведены основные поля и
методы объекта Printers : PROPERTY Aborted:boolean - Показывает, что
процесс печати прерван Canvas:Tcanvas - Стандартный Canvas, как у любого
графического объекта. Он позволяет рисовать на листе бумаге графику,
выводить текст ... . Тут есть несколько особенностей, они описаны после
описания объекта. Fonts:Tstrings - Возвращает список шрифтов, поддерживаемых
принтером Handle:HDS - Получить Handle на принтер для использования функций
API (см. Далее) Orientation:TprinterOrientation - Ориентация листа при
печати : (poPortrait, poLandscape) PageHeight:integer - Высота листа в
пикселах PageNumber:integer - Номер страницы, увеличивается на 1 при каждом
NewPage PageWidth:integer - Ширина листа в пикселах PrinterIndex:integer
- Номер используемого принтера по списку доступных принтеров Printers
Printers:Tstrings - Список доступных принтеров Printing:boolean - Флаг,
показывающий, что сейчас идет процесс печати Title:string - Имя документа
или приложения. Под этим именем задание на печать регистрируется в
диспетчере печати
METODS AssignPrn(f:TextFile) - Связать текстовый
файл с принтером. Далее вывод информации в этот файл приводит к ее печати.
Удобно в простейших случаях. Abort - Сбросить печать BeginDoc -
Начать печать NewPage - Начать новую страницу EndDoc - Завершить печать.
Пример :
Procedure TForm1.Button1Click(Sender: TObject);
Begin With Printer doBegin BeginDoc; { Начало печати } Canvas.Font:=label1.font; { Задали шрифт } Canvas.TextOut(100,100,'Это тест принтера !!!'); { Печатаем текст } EndDoc; { Конец печати } end; end;
Особенности
работы с TPrinter
1. После команды BeginDoc шрифт у Canvas принтера
сбрасывается и его необходимо задавать заново 2. Все координаты даны в
пикселах, а для нормальной работы необходимы миллиметры (по двум очевидным
причинам: очень трудно произвести разметку страницы в пикселах (особенно
если необходима точность), и , главное, при изменении разрешающей
способности принтера будет изменяться число точек на дюйм, и все координаты
"поедут". 3. У TPrinter информация о принтере, по видимому, определяются
один раз - в момент запуска программы (или смены принтера). Поэтому
изменение настроек принтера в процессе работы программы может привести к
некорректной работе, например, неправильной печать шрифтов True Type.
Определение параметров принтера через API Для определения информации о
принтере (плоттере, экране) необходимо знать Handle этого принтера, а его
можно узнать объекта TPrinter - Printer.Handle. Далее вызывается функция API
(unit WinProcs) : GetDevice(Handle:HDC; Index:integer):integer; Index - код
параметра, который необходимо вернуть. Для Index существует ряд констант :
DriverVersion - вернуть версию драйвера Texnology - Технология вывода,
их много, основные dt_Plotter - плоттер dt_RasPrinter - растровый
принтер dt_Display - дисплей HorzSize - Горизонтальный размер листа (в
мм) VertSize - Вертикальный размер листа (в мм) HorzRes - Горизонтальный
размер листа (в пикселах) VertRes - Вертикальный размер листа (в пикселах)
LogPixelX - Разрешение по оси Х в dpi (пиксел /дюйм) LogPixelY -
Разрешение по оси Y в dpi (пиксел /дюйм) Кроме перечисленных еще около
сотни, они позволяют узнать о принтере практически все. Параметры,
возвращаемые по LogPixelX и LogPixelY очень важны - они позволяют произвести
пересчет координат из миллиметров в пиксели для текущего разрешения
принтера. Пример таких функций:
Procedure TForm1.GetPrinterInfo; { Получить информацию о принтере } begin PixelsX:=GetDeviceCaps(printer.Handle,LogPixelsX);
PixelsY:=GetDeviceCaps(printer.Handle,LogPixelsY); end;
Function TForm1.PrinterCoordX(x:integer):integer; { переводит координаты из мм в пиксели } begin PrinterCoordX:=round(PixelsX/25.4*x); end;
Function TForm1.PrinterCoordY(Y:integer):integer; { переводит координаты из мм в пиксели } begin PrinterCoordY:=round(PixelsY/25.4*Y); end;
'Этот текст печатается с отступом 30 мм от левого края и '+
'55
мм от верха при любом разрешении принтера');
Данную методику можно с
успехом применять для печати картинок - зная размер картинки можно
пересчитать ее размеры в пикселах для текущего разрешения принтера,
масштабировать, и затем уже распечатать. Иначе на матричном принтере (180
dpi) картинка будет огромной, а на качественном струйнике (720 dpi) -
микроскопической.
P.S. Мой комментарий. Я производил печать
следующим образом:
procedure TForm6.SpeedButton1Click(Sender: TObject);
var PRect:Trect; PBitMap:TBitmap; begin PBitmap:=TBitMap.Create; PBitmap.LoadFromFile('C:1.bmp'); With PRect dobegin left:=0;
top:=0;
right:=Printer.PageWidth; Bottom:=Printer.PageHeight; end; with printer dobegin BeginDoc;
font.name:='Times New Roman';
Canvas.StretchDraw(PRect,Bitmap); EndDoc; end;
PBitmap.Free;
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного
способа создания контента для размещения его во всемирной паутине. Разработка
HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое
изменилось так, что текущие спецификации HTML перестали соответствовать
сегодняшним требованиям.
HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и
соответствовать растущим требованиям разнообразного и смешанного web-контента.
HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье
мы взглянем на 5 новых интересных вещей в HTML 5.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена
устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его
предшественник, но в тоже время лишен некоторых внутренних механизмов, что
впрочем целиком следствие из расширенной универсальности ListView. Среди отличий
ListView и GridView можно назвать и гибкую настройку разметки, что позволяет
выводить данные не только в табличном виде, но и вообще в любом каком пожелает
программист. Благодаря шаблонам ItemTemplate, EditItemTemplate,
InsertItemTeplate можно настроить внешний вид при любом из состояний ListView:
редактировании или выборе элемента.
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов
для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны
как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net.
Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером
отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report
и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы,
но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов
и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам
сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные
отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в
сфере программных продуктов для Business Intelligence.