Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Вниз

Состояние принтера. Как определить?   Найти похожие ветки 

 
sirsergio ©   (2004-12-15 18:17) [0]

Есть необходимость обрабатывать текущее состояние принтера. Печать производиться на принтер штрих-кодов.
В буфер печати бросается не все задание, а по листу
Юзер должен мочь отменить печать в любой момент времени.
Как определить, что лист распечатался (принтер ничего не печатает). Использую глобальный объект Printer.


 
Суслик ©   (2004-12-15 18:21) [1]


> Юзер должен мочь отменить печать в любой момент времени.

прости, что с оффтопом, но почему бы не позволить ему это делать штатными средствами - отменять через очередь печати?

Ответа не знаю, к сожалению.


 
olookin ©   (2004-12-15 18:21) [2]

Printer.Printing?


 
Суслик ©   (2004-12-15 18:23) [3]

не пойдет - это флажок самого printer. К принтеру отношения не имеет.


 
olookin ©   (2004-12-15 18:24) [4]

[3] Суслик ©   (15.12.04 18:23)

Э. Я либо чего то не понимаю, либо вот:

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.

Остановить печать надо из программы?


 
Суслик ©   (2004-12-15 18:26) [5]


> Остановить печать надо из программы?

ну ты типа реализацию printing посмотри - это просто дельфовый флажок.


 
olookin ©   (2004-12-15 18:30) [6]

>>это просто дельфовый флажок.

Ну конечно это просто индикатор процесса. Но:

>>Юзер должен мочь отменить печать в любой момент времени. = Abort
>>Как определить, что лист распечатался (принтер ничего не печатает).  = Printing.

Т.е. если сейчас идет печать и надо отменить эту самую печать, то

if Printer.Printing then Printer.Abort

Правильно я понял?


 
Суслик ©   (2004-12-15 18:32) [7]


> Правильно я понял?

насколько я понял автору нужно понять что лист реально распечатался.
и толкьо потом послать следующий.
printing об этом не скажет.


 
olookin ©   (2004-12-15 18:36) [8]

[7] Суслик ©   (15.12.04 18:32)

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


 
Суслик ©   (2004-12-15 18:43) [9]

что-то я не пойму о чем ты:

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


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


 
sirsergio ©   (2004-12-15 18:43) [10]

Разьясню. Когда у принтера заканчивается бумага он печатает повер последней страницы оставшиеся страницы (такой принтер уж).
На счет свойства Printing, следующее - бросается одна страница, далее Printer.BeginDoc, после - Printer.EndDoc, в этом промежутке Printing = True, реально печать идет после Printer.EndDoc. Далее мне надо каким-то флажком определить момент распечатки страницы (первой). Как???


 
sirsergio ©   (2004-12-15 18:44) [11]

Разьясню. Когда у принтера заканчивается бумага он печатает повер последней страницы оставшиеся страницы (такой принтер уж).
На счет свойства Printing, следующее - бросается одна страница, далее Printer.BeginDoc, после - Printer.EndDoc, в этом промежутке Printing = True, вне FALSE! Реально печать идет после Printer.EndDoc. Далее мне надо каким-то флажком определить момент распечатки страницы (первой). Как???


 
olookin ©   (2004-12-15 18:49) [12]

[9] Суслик ©   (15.12.04 18:43)

Да, согласен.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
1-1106668608
TeNY
2005-01-25 18:56
2005.02.06
РАзмер стринга в инифайле всего 2048 символа как это исправить?


1-1106255785
gyry-9
2005-01-21 00:16
2005.02.06
Уменшение числа до одного розряда


3-1104973733
Ghost_
2005-01-06 04:08
2005.02.06
генератор отчетов


1-1106508346
Алексей
2005-01-23 22:25
2005.02.06
Вызов функции из библиотеки


9-1098938936
mudazvon
2004-10-28 08:48
2005.02.06
Как работает этот PixelCheck?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский