Вторник, 21.05.2024, 00:29
AMAR Inc.
Приветствую Вас Гость | RSS
Главная Программирование Регистрация Вход
Меню сайта

Категории каталога
Разные статьи [48]
Система [62]

Главная » Статьи » Delphi » Разные статьи

Работа с принтером.
   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 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) - микроскопической.

   P.S. Мой комментарий.
Я производил печать следующим образом:

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;


Категория: Разные статьи | Добавил: amar-runyak (03.11.2007)
Просмотров: 21403 | Комментарии: 169 | Рейтинг: 5.0/1 |

Всего комментариев: 121 2 3 »
12 Stephenbino  
0
Мобильная эротика и виртуальный секс - <a href=https://pornopda.xyz/virt/sexcard/32617-chto-vhodit-v-klassnyj-seks-nomer-telefona-virt-s-devushkami-s-nomerami-telefonov-i-dnem-i-nochju.html>Телефон давайте хочу секс. Отзывы гостей сайта о вирте с оплатой по карте – удобная форма для горячих разговоров ч.26</a>, способствует развитию культуры сексуальных возможностей и автономии. Поощряя людей исследовать свои желания на собственных условиях, эти платформы помогают разрушить представление о том, что секс должен контролироваться или диктоваться внешними силами. Вместо этого они продвигают представление о сексуальности, основанное на согласии, удовольствии и взаимном уважении.
В мире, где сексуальность часто контролируется и ограничивается, мобильная эротика предлагает маяк надежды и возможностей. Это напоминание о том, что каждый заслуживает права свободно и без страха осуждения исследовать свои желания и получать удовольствие от жизни.
Номер телефона для знакомств и вирта, а также <b>Секс за деньги телефон : секс по телефону с МТС и Билайн <a href="tel:+78095056850">+7-809-505-6850</a>. Можно позвонить с мобильного и городского телефона, а также заказать обратный звонок вирт с девушками с телефоном </b> после оплаты картой девушка позвонит на ваш телефон.

Если вы ищете дополнительный источник удовольствия, который доступен в любое удобное для вас время, то секс по телефону именно то, что вам нужно. Вам больше не придется ограничиваться рамками обычной интимной жизни.
Мы гарантируем полную конфиденциальность и анонимность наших услуг <a href=https://pornopda.xyz/virt/sexcard/33007-psihologicheskie-faktory-opredeljajuschie-vybor-vida-seksualnoj-dejatelnosti-vybiraj-svoj-seks-devushek-po-telefonu-virt-massazh-ili-zhestkoe-dominirovanie.html>Мужское воображение в виртуальном сексе занимает важную роль. Горячий вирт в Агрыз с опытными и интересными девушками</a>. Вы можете быть уверены, что ваша личная жизнь останется только вашей тайной.
В последние годы виртуальный секс и удовлетворение на расстоянии, переживает всплеск популярности, во многом благодаря достижениям в области технологий и изменению отношения к сексуальности. Поскольку смартфоны становятся неотъемлемой частью повседневной жизни, все больше и больше людей обращаются к своим устройствам, чтобы исследовать свои желания и общаться с единомышленниками.
Одним из ключевых факторов роста спроса на <a href=https://pornopda.xyz/virt/sexcard/32646-otkrovennye-besedy-i-jemocionalnyj-komfort-zachem-ljudi-zanimajutsja-seksom-po-telefonu-free-phone-sex-pervye-minuty-besplatno.html>Телефон секс секс русская женщина</a>, является доступность цифрового контента. Всего несколькими нажатиями на телефоне вы получите доступ к огромному количеству чувственных изображений, видео и историй, адаптированных к вашим личным вкусам и предпочтениям. Эта простота доступа помогла демократизировать эротику, сделав ее более инклюзивной и доступной для людей любого происхождения и идентичности.
Самые горячие разговоры <b>снял секс по телефону </b> только у нас!

Кроме того, мобильная эротика - <a href=https://pornopda.xyz/pornofoto/molod-foto/34300-i-snova-marija-po-prosbe-posetitelej-sajta-hhh-molodenkie-foto-devushek.html>Леди Ди и Люси из Чешской республики, красивая эротика</a>, предлагает уровень интерактивности и вовлеченности, с которым традиционные формы эротики просто не могут сравниться. Эти платформы — от захватывающих виртуальных впечатлений до функций чата в реальном времени — позволяют пользователям общаться с другими способами, которые кажутся интимными и личными.
Но с ростом популярности возникают новые проблемы и соображения. Поскольку развлечения на сайтах становятся все более популярными, для платформ важно уделять приоритетное внимание безопасности и конфиденциальности пользователей, внедряя надежные меры безопасности для защиты от преследований и злоупотреблений.
В целом, рост спроса на секс в виртуальной среде, представляет собой сейсмический сдвиг в том, как мы взаимодействуем с сексуальностью и желанием. Используя возможности технологий, эти платформы помогают создать более инклюзивный и свободный мир эротики для всех.

11 Jacobbof  
0
Привет хотим представить вам партнерку по http://onebetbest.com/push.php - пуш монетизацииhttp://mapsfoyou.ru - .
Всем кому интересен данный вид заработка можно перейти по http://onebetbest.com/push.php - ССЫЛКЕ(КЛИК) для регистрации.
============================================================================
Hi I want to introduce you to the affiliate program at http://onebetbest.com/push.php - push monetization
Anyone who is interested in this kind of earnings you can go to http://onebetbest.com/push.php - the LINK(CLICK) for registration.

10 Charlesjon  
0
You really make it appear really easy along with your presentation however I in finding this topic to be really something which I think I'd never understand. It sort of feels too complicated and extremely wide for me. I am taking a look forward in your subsequent submit, I will try to get the hold of it!

I have been browsing online more than three hours these days, but I by no means found any fascinating article like yours. It is lovely worth sufficient for me. In my view, if all site owners and bloggers made good content as you did, the internet will be a lot more helpful than ever before.

http://www.crystalspace3d.org/main/User:Deadsamuraiz

9 georgialk3  
0
Бесплатные порно фото с ежедневным обновлением
http://nemetckie.siski.porngalleries.top/?page.jena

8 AleximodChix  
0
Tulsa Washington Sacramento Oklahoma City Pittsburgh San Francisco Oakland Wichita Orlando Plano Riverside Phoenix San Antonio San Jose



To Guillermo family, I am very sorry for your loss... To Dana,Carlo, my thoughts and prayers have been with you everyday... He loved and cherished the three of you!

January 23, 2017
Omaha
New York

https://www.youtube.com/watch?v=ZY-r-A58Er4 - Guadalupe,Stacy,Hunter,Moses,Malcolm,Elias,Alfonso,Gerardo,Wilfredo,Ervin,Orville ,Isiah,Sterling,Louie,Joaquin,Carlton,Leonel,Lon,Shelby,Ignacio,Gustavo,
Your friends Efrain,Lionel,Jake,Lucien,Brady,Sherman,Noel,Alton,Dominique,Grover,Avery,Jasper, Heath,Kermit,Carlo,Bryce,Jonathon,Adolph,Grady,Kim,Arnulfo,Reuben,Kelvin,Brooks,M itch,Junior,Benny,Sylvester,Aubrey,Jules,Robin,Hans,Gregorio,Andres,Carmen,Randal ,Blair,Bert,Harley,Toby,Rodolfo,Morgan,Luke,Ellis,Vance,Caleb,Thaddeus,Laurence,A lejandro,Lincoln,Gregorio,Lamont,Ira,Refugio,Augustine,Erich,.

1-5 6-10 11-12
Имя *:
Email *:
Код *:
Форма входа

Поиск

Друзья сайта

Статистика

Copyright AMAR Inc. © 2024