InfoMix.Ru - У нас можно найти бесплатные программы для Windows, психологические тесты, проверенную халяву, рефераты, Photoshop Top Secret и многое другое!

Сериал Герои (Heroes) 2 сезона
Сериал Герои (Heroes) 2 сезона - Когда полное затмение погружает планету во тьму, профессор-генетик в Индии, взволнованный исчезновением отца, открывает секретную теорию - о людях со сверхсилой, живущих среди нас.
Молодой мечтатель пытается убедить своего брата-политика, в том, что может летать. Участница школьной команды поддержки узнает, что ей невозможно нанести какую-либо физическую травму.
Талантливый художник, чья наркотическая зависимость разрушает его жизнь и его отношения с девушкой, может изображать на своих картинах будущее. В Лос-Анджелесе бывший полицейский-неудачник умеет читать мысли людей, что выводит его на след неуловимого серийного убийцы. В Японии у молодого человека открывается способность останавливать время одной лишь силой воли. Художник-провидец нарисовал картину ядерного взрыва Нью-Йорка, и теперь, всем им предстоит спасти мир от глобального катаклизма...
Цена: 357.00р. / 15.02$ Доставка бесплатно!
Перейти на страницу с более подробным описанием...

Обзоры
Магазин DVD дисков
 Видео на DVD
 Хентай
 Клипы
 Клубничка
 Сериалы
 Лучшее из интернета
 Дополнения к играм
 Тематические сборники
 Операционные системы
 Дистрибутивы
 Софт

 Скачать прайс

Добавь в закладки!

Разыскиваем авторов!
Разыскиваем авторов!

Уважаемые авторы, Вы имеете потрясающую возможность публиковать свои статьи, рефераты, анонсы бесплатного софта, интересные новости и многое другое у нас на портале!

Подробности тут...

Посетителей сегодня


Работа с принтером

В статье приведены основные поля и методы объекта Printers

Автор:
Контакт:
Источник:
Просмотров: 384
Сервис: версия для печати | обсудить в форуме | расказать другу | html/bb код | в rss



Delphi имеет стандартный объект для доступа к принтеру - TPRINTER, находящийся в модуле PRINTERS. В этом модуле имеется переменная Printer:Tpinter, что избавляет от необходимости описывать свою. Он позволяет выводить данные на печать и управлять процессом печати. Правда, в некоторых версиях Delphi 1 он имеет "глюк" - не работают функции Draw и StrethDraw. Но эта проблема поправима - можно использовать функции API. Далее приведены основные поля и методы объекта Printers :

СВОЙСТВА

  • 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 - Имя документа или приложения. Под этим именем задание на печать регистрируется в диспетчере печати

МЕТОДЫ

  • AssignPrn(f: TextFile) - Связать текстовый файл с принтером. Далее вывод информации в этот файл приводит к ее печати. Удобно в простейших случаях.
  • Abort - Сбросить печать
  • BeginDoc - Начать печать
  • NewPage - Начать новую страницу
  • EndDoc - Завершить печать.

Пример:

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Printer do
  begin
    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;

GetPrinterInfo;
Printer.Canvas.TextOut(PrinterCoordX(30), PrinterCoordY(55),
'Этот текст печатается с отступом 30 мм от левого края и '+
'55 мм от верха при любом разрешении принтера');

Данную методику можно с успехом применять для печати картинок - зная размер картинки можно пересчитать ее размеры в пикселах для текущего разрешения принтера, масштабировать, и затем уже распечатать. Иначе на матричном принтере (180 dpi) картинка будет огромной, а на качественном струйнике (720 dpi) - микроскопической.

Я производил печать следующим образом:

procedure TForm6.SpeedButton1Click(Sender: TObject);
var
  PRect: Trect;
  PBitMap: TBitmap;
begin
  PBitmap:=TBitMap.Create;
  PBitmap.LoadFromFile('C:\1.bmp');
  with PRect do
  begin
    left:=0;
    top:=0;
    right:=Printer.PageWidth;
    Bottom:=Printer.PageHeight;
  end;
  with printer do
  begin
    BeginDoc;
    font.name:='Times New Roman';
    Canvas.StretchDraw(PRect,Bitmap);
    EndDoc;
  end;
  PBitmap.Free;
end;

 

OS и Железо | 2008-01-19 

В начало библиотеки | В начало данного раздела | Скачать InfoDigest

другие статьи текущего раздела

комментарии
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание!

Комментарии отсутствуют!


Оставить свой комментарий:

Как вас зовут:   
Текст комментария:
Необходимо ввести защитный код! (включите отображение картинок):

Наша рассылка
ПОДПИШИСЬ!
Подпишись на нашу убойную рассылку, и ты еженедельно будешь получать на e-mail самые интересные новости, тесты, опросы, анекдоты, прямые ссылки на лучший софт, обзоры "халявы", анонсы новых статей в нашей библиотеке, последних новинок нашего магазина, новых тем форума и многое-многое другое!

Архив рассылки
Подробнее/Подписка


Опрос

Зачем Вы курите?











Магазин DVD дисков
Доставка бесплатна!
Мы оплачиваем все расходы*, связанные с доставкой вашего заказа в нашем магазине DVD дисков!

как сделать заказ
как оплатить
о доставке

 

© 2009 Руководитель - Березин Юрий (ICQ: 7741822), Программирование - GoldStudio.ru
При перепечатке материалов ссылка на наш портал обязательна!