Как вызвать диалоговое окно «Настройки драйвера» для принтера? - PullRequest
1 голос
/ 30 апреля 2020

Вместо того, чтобы использовать стандартный PrintDialog, я создаю свой собственный диалог.
Я хочу иметь возможность вызывать собственный диалог установки драйвера принтера, т. Е. Как если бы вы нажали кнопку «Свойства» в PrintDialog.
Может Вы предлагаете способ сделать это?

1 Ответ

2 голосов
/ 30 апреля 2020

Я не использовал этот API раньше, но мне кажется, что вы можете использовать для этого функцию DocumentProperties.

Минимальный пример (с использованием принтера по умолчанию):

var
  PrinterName: string;
  BufLen: Cardinal;
  PrinterHandle: THandle;
begin

  GetDefaultPrinter(nil, @BufLen);
  SetLength(PrinterName, BufLen);
  GetDefaultPrinter(PChar(PrinterName), @BufLen);
  SetLength(PrinterName, BufLen - 1);

  if not OpenPrinter(PChar(PrinterName), PrinterHandle, nil) then
  begin
    ShowMessage('Could not open printer.');
    Exit;
  end;

  try
    DocumentProperties(Handle, PrinterHandle, PChar(PrinterName), nil, nil, DM_IN_PROMPT)
    // possibly do other things that might raise an exception
  finally
    ClosePrinter(PrinterHandle);
  end;

Указатели nil можно заменить структурами DEVMODE, которые содержат начальные настройки и настройки, выбранные пользователем в GUI, если вы также добавите соответствующие флаги. Подробности смотрите в документации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...