Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как указать размер страницы не используя TPrinterSetupDialog

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

Как указать размер страницы не используя TPrinterSetupDialog

Автор: Адександр Герцог

- Мы, интердевочки, - девочки, работающие в Интернете. Дружок, иди сюда, я помогу тебе, я научу тебя правильно пользоваться твоим Пентиумом. Поиграй со мной в твои игры... Вот диск твой становится жестким. Ты копишь информацию... Оооо! начинает работать твой струйный принтер!...
- Простите, а что, дома вам этого не хватает?
- Дома мой муж работает со мной в режиме пользователя.
- Ничего, зато есть гарантия от любого вируса!

Я использую следующий код. Уже с год как работает.


var
  Device : array[0..cchDeviceName-1] of Char;
  Driver : array[0..(MAX_PATH-1)] of Char;
  Port : array[0..32] of Char;
  hDMode : THandle;
  pDMode : PDevMode;
  sDev : array[0..32] of Char;
begin
  Printer.GetPrinter(Device,Driver,Port,hDMode);
  if hDMode <> 0 then
  begin
    pDMode :=GlobalLock(hDMode);
    if pDMode <> nil then
    begin
      pdMode^.dmOrientation :=2;
      // landscape
      pdMode^.dmPaperSize := DMPAPER_A3
      // (см. win32.hlp DEVMODE)
      GlobalUnlock(hDMode);
    end;
  end;
end;

Для настройки размера страницы без использования диалога TPrinterSetupDialog можно использовать поле DM_ PAPERSIZE рекорда TDevMode. Это поле представляет собой размер страницы в пикселях.

Вот обновленная версия вашего кода, которая настраивает размер страницы на A3:

var
  Device   : array[0..cchDeviceName-1] of Char;
  Driver   : array[0..(MAX_ PATH-1)] of Char;
  Port     : array[0..32] of Char;
  hDMode   : THandle;
  pDMode   : PDevMode;
  sDev    : array[0..32] of Char;

begin
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  if hDMode <> 0 then
  begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then
    begin
      pdMode^.dmOrientation := 2; // ландшафт
      pdMode^.dmPaperSize   := dmPapersizeA3;
      GlobalUnlock(hDMode);
    end;
  end;
end;

Обратите внимание, что DM_ PAPERSIZE - это тип перечисления в Windows API, а A3 - это значение из этого перечисления. Вы можете использовать другие значения для настройки различных размеров страницы.

Также помните, что настройка размера страницы с помощью этого метода влияет только на 기본ные настройки принтера. Если вам нужно напечатать конкретный документ с конкретным размером страницы, вам может потребоваться использовать другие методы, такие как создание печатающей задачи и указание размера страницы для каждой страницы документа.

В статье описывается способ указания размера страницы в приложении на языке программирования Delphi без использования диалогового окна TPrinterSetupDialog.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:47:41/0.0033969879150391/0