стан принтера

Стан принтера. Як визначити?

Є необхідність обробляти поточний стан принтера. Друк проводитися на принтер штрих-кодів.
В буфер друку кидається не всі завдання, а по листу
Юзер повинен могти скасувати друк в будь-який момент часу.
Як визначити, що лист роздрукувався (принтер нічого не друкує). Використовую глобальний об'єкт Printer.


> Юзер повинен могти скасувати друк в будь-який момент часу.

прости, що з оффтопили, але чому б не дозволити йому це робити штатними засобами - скасовувати через чергу друку?

Відповіді не знаю, на жаль.

не піде - це прапорець самого printer. До принтера відношення не має.

Е. Я або чогось не розумію, або ось:

Use Printing to determine if a job is printing.
Printing is True when the application has called the BeginDoc method but the EndDoc method (or the Abort method) hasn "t yet been called.

Зупинити друк треба з програми?


> Зупинити друк треба з програми?

ну ти типу реалізацію printing подивися - це просто дельфовий прапорець.

>> це просто дельфовий прапорець.

Ну звичайно це просто індикатор процесу. але:

>> Юзер повинен могти скасувати друк в будь-який момент часу. = Abort
>> Як визначити, що лист роздрукувався (принтер нічого не друкує). # XA0; = Printing.

Тобто якщо зараз йде друк і треба скасувати цю саму печатку, то

if Printer.Printing then Printer.Abort

Правильно я зрозумів?

Начебто так, але ось що дивно. Надсилаємо запит на друк (BeginDoc), далі йде процес друку (Printing = true), і по завершенні завдання (неважливо як вона завершилася, хоч взагалі картрижд лопнув, аби система повідомила про це) отримуємо (EndDoc і Printing = false). Якщо папір зажував (наприклад), то Printing = true до тих пір, поки завдання не знята вручну, або методом, дійсно не мають відношення до TPrinter. Погодьтеся, визначити, що папір зажував, можна тільки візуально (тобто не програмно).

щось я не зрозумію про що ти:

procedure TPrinter.EndDoc;
begin
# XA0; CheckPrinting (True);
# XA0; EndPage (DC);
# XA0; if not Aborted then Windows.EndDoc (DC);
# XA0; FPrinting: = False;
# XA0; FAborted: = False;
# XA0; FPageNumber: = 0;
end;

я вже додаток закрив, тобто enddoc давно виконався, тобто printing = false, а принтер все друкує.

Надала роз'яснення. Коли у принтера закінчується папір він друкує повер останньої сторінки залишилися сторінки (такий принтер вже).
На рахунок властивості Printing, наступне - кидається одна сторінка, далі Printer.BeginDoc, після - Printer.EndDoc, в цьому проміжку Printing = True, реально друк йде після Printer.EndDoc. Далі мені треба якимось прапорцем визначити момент роздруківки сторінки (першої). Як.

Надала роз'яснення. Коли у принтера закінчується папір він друкує повер останньої сторінки залишилися сторінки (такий принтер вже).
На рахунок властивості Printing, наступне - кидається одна сторінка, далі Printer.BeginDoc, після - Printer.EndDoc, в цьому проміжку Printing = True, поза FALSE! Реально друк йде після Printer.EndDoc. Далі мені треба якимось прапорцем визначити момент роздруківки сторінки (першої). Як.

Схожі статті