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

Реализация команды PrintTo

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

Реализация команды PrintTo

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   Printers, Shellapi;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   Device: array[0..255] of Char;
   Driver: array[0..255] of Char;
   Port: array[0..255] of Char;
   S: string;
   hDeviceMode: THandle;
   documentname: string;
 begin
   Printer.PrinterIndex := -1;  // select a printer, in this case default 
  Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
   S := Format('"%s" "%s" "%s"', [Device, Driver, Port]);
   documentname := 'c:\anydocument.doc';
   ShellExecute(Handle, 'printto', PChar(documentname), PChar(S), nil, SW_HIDE);
 end;

Here's the translation of the text into Russian:

Код-сниппет на Delphi - процедура PrintTo, которая печатает документ в выбранном принтере с помощью функции ShellExecute. Вот улучшенная версия кода с комментариями и предложениями по альтернативным решениям:

uses
  Printers, Shellapi;

Процедура TForm1.Button1Click(Sender: TObject); var Device: array[0..255] of Char; Driver: array[0..255] of Char; Port: array[0..255] of Char; S: string; hDeviceMode: THandle; documentName: string; begin // Выбрать по умолчанию принтер Printer.PrinterIndex := -1;

// Получить устройство, драйвер и порт для выбранного принтера Printer.GetPrinter(Device, Driver, Port, hDeviceMode);

// Создать строку для хранения информации о устройстве, драйвере и порте S := Format('"%s" "%s" "%s"', [Device, Driver, Port]);

// Установить имя документа documentName := 'c:\anydocument.doc';

// Использовать ShellExecute для печати документа в выбранном принтере ShellExecute(Handle, 'printto', PChar(documentName), PChar(S), nil, SW_HIDE); end; `` **Предложения:** 1. Вместо жесткого кодированияPrinterIndexв -1, рассмотрите более надежный способ выбора по умолчанию принтера. Вы можете использовать методPrinter.SelectPrinterили запросить систему для поиска по умолчанию принтера. 2. Для улучшения читаемости и поддержки кода, рассмотрите определение отдельных переменных для каждого компонента информации о принтере (устройство, драйвер, порт) вместо использования массивов. 3. Если вам нужно печатать несколько документов или обрабатывать ошибки более элегантно, рассмотрите более надежное решение печати,such asTPrintDialog` или третьестороннюю библиотеку.

В целом, это код-сниппет компактен и эффективен в своей цели, но есть возможности для улучшения и альтернативных решений для исследования.

В статье описывается реализация функции PrintTo в Delphi, которая позволяет печатать файл на выбранный принтер.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:57:02/0.003715991973877/0