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

Вывести диалог свойств принтера

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Вывести диалог свойств принтера

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

{ 
  If you need to create your own printer dialog, you can use the PrinterProperties 
  API function to bring up a printer's properties dialog. 
}

 uses
   WinSpool, Printers;

 procedure TForm1.Button1Click(Sender: TObject);
 const
   { 
   The TPrinterDefaults structure specifies the default data type, 
   environment, initialization data, and access rights for a printer. 
  }
   Defaults: TPrinterDefaults = (pDatatype: nil;
     pDevMode: nil;
     DesiredAccess: STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_USE);
 var
   hPrinter: THandle;
   Device: array[0..255] of char;
   Driver: array[0..255] of char;
   Port: array[0..255] of char;
   hDeviceMode: THandle;
   RetVal: Boolean;
 begin
   Printer.PrinterIndex := Combobox1.ItemIndex;
   { Retrieve information about the specified printer }
   Printer.GetPrinter(Device,
     Driver,
     Port,
     hDeviceMode);
   { Retrieve a handle identifying the specified printer or print }
   if not OpenPrinter(@Device, hPrinter, @Defaults) then
     RaiseLastWin32Error;
   try
     { Display a printer-properties property sheet for the specified printer }
     PrinterProperties(Handle, hPrinter);
   finally
     { Close the specified printer object }
     ClosePrinter(hPrinter);
   end;
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   { Show available printers in a Combobox }
   Combobox1.Items := Printer.Printers;
   Combobox1.ItemIndex := 0;
 end;

Приведенный код на Delphi демонстрирует, как вызвать диалог свойств принтера с помощью функции API PrinterProperties из модулей WinSpool и Printers.

Вот разбивка кода:

Процедура FormCreate В этой процедуре получаются доступные принтеры и отображаются в комбо-боксе (Combobox1). Первый элемент списка автоматически выбирается.

Процедура Button1Click Когда кнопка с индексом 1 (предполагается, что это единственная кнопка на форме) кликнута, происходят следующие действия:

  1. Получение информации о指定енном принтере:
    • Printer.GetPrinter получает имя устройства, имя драйвера, имя порта и.handle к устройству для выбранного принтера.
  2. Открытие объекта принтера:
    • OpenPrinter открывает handle к указанному принтеру или очереди печати с указанными правами доступа (в этом случае, STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_USE).
  3. Показ свойства диалога для указанного принтера:
    • PrinterProperties отображает диалоговое окно, позволяющее пользователям просматривать и изменять различные настройки, связанные с выбранным принтером.
  4. Закрытие объекта принтера:
    • ClosePrinter закрывает handle к указанному принтеру или очереди печати.

Код также включает в себя обработку ошибок с помощью RaiseLastWin32Error, чтобы обрабатывать любые ошибки, которые могут возникнуть при операциях с принтерами.

Альтернативное решение Вместо использования функции API PrinterProperties можно использовать компонент TPrintDialog, предоставленный Delphi. Этот компонент обеспечивает более пользовательский способ отображения диалога свойств принтера и позволяет настроить различные параметры.

Вот пример, как можно модифицировать код для использования TPrintDialog:

uses
  Printers;

procedure TForm1.Button1Click(Sender: TObject);
var
  PrintDialog: TPrintDialog;
begin
  PrintDialog := TPrintDialog.Create(nil);
  try
    PrintDialog.PrinterIndex := Combobox1.ItemIndex;
    PrintDialog.Execute;
  finally
    FreeAndNil(PrintDialog);
  end;
end;

В этом примере компонент TPrintDialog создается, и свойство PrinterIndex устанавливается в выбранный принтер в комбо-боксе. Метод Execute отображает диалоговое окно печати, позволяя пользователю просматривать и изменять настройки принтера.

В статье описывается создание диалога свойств принтера в программном коде на языке Delphi с помощью API-функции PrinterProperties и использования структуры TPrinterDefaults для определения параметров печати.


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

Получайте свежие новости и обновления по 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 12:09:44/0.005836009979248/1