Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Получить размер бумаги в миллиметрах

Delphi , ОС и Железо , Принтеры и Печать

Получить размер бумаги в миллиметрах


uses
  printers; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  papermmx, papermmy: Extended; 
begin 
  Printer.BeginDoc; 

  { 
  PHYSICALWIDTH = Dots horizontal of the paper 
  LOGPIXELSX    = DPI (Dots per Inch) 
  25.4          = To calculte Inch to Millimeter 
  } 
  papermmx := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALWIDTH) / 
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) * 25.4; 
  papermmy := GetDeviceCaps(Printer.Canvas.Handle, PHYSICALHEIGHT) / 
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) * 25.4; 

  with Printer.Canvas do 
  begin 
    TextOut(200, 100, floattostr(papermmx) + ' mm x ' +
      floattostr(papermmy) + ' mm'); 
  end; 
  Printer.EndDoc; 
end;

Here's a translation of the text into Russian:

Код-snippet на Delphi, который получает размер бумаги в миллиметрах и печатает его в консоль.

Расшифровка кода:

  1. Процедура Button1Click вызывается при клике пользователем кнопки на форме.
  2. Она начинает с вызова Printer.BeginDoc() для начала нового документа для печати.
  3. Затем она получает физическую ширину и высоту бумаги в пикселях с помощью GetDeviceCaps. Метод возвращает устройственно-зависимые возможности, такие как разрешение (точек на дюйм).
  4. Для преобразования пиксельных значений в миллиметры она делит физическую ширину и высоту бумаги на логическую ширину и высоту (LOGPIXELSX и LOGPIXELSY) и умножает результат на 25,4 (конвертирующий фактор от дюймов до миллиметров).
  5. Используется блок временного доступа with для доступа к свойствам Canvas без необходимости их квалифицировать с помощью Printer.Canvas.
  6. Она использует метод TextOut для печати размера бумаги в миллиметрах в консоль, используя функцию floattostr для преобразования вещественных значений в строки.
  7. Наконец, она вызывает Printer.EndDoc() для окончания документа и закрытия сессии печати.

Альтернативное решение:

  • Вместо использования GetDeviceCaps, вы можете использовать свойства Printer.PaperWidth и Printer.PaperHeight, которые возвращают размер бумаги в пикселях. Затем можно преобразовать эти значения в миллиметры, как показано выше.
  • Если вам нужно получить размер бумаги в более читаемом формате, вы можете использовать функцию Format для форматирования строки вывода.

Вот обновленный код-snippet, который использует альтернативное решение:

uses
  printers;

procedure TForm1.Button1Click(Sender: TObject);
var
  paperWidth, paperHeight: Integer;
begin
  Printer.BeginDoc;

  paperWidth := Printer.PaperWidth / GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX) * 25.4;
  paperHeight := Printer.PaperHeight / GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY) * 25.4;

  with Printer.Canvas do
  begin
    TextOut(200, 100, Format('%.2f мм x %.2f мм', [paperWidth, paperHeight]));
  end;
  Printer.EndDoc;
end;

Этот код-snippet более компактен и легче для чтения, чем оригинальный.

В статье описывается процесс получения размера бумаги в миллиметрах на компьютере с использованием языка программирования Delphi и функций GetDeviceCaps.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Принтеры и Печать ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 02:42:55/0.0071260929107666/2