Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 942

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Вопрос связан с печатанием форм на лазерном принтере

Печать на матричном принтере происходит как должно
Есди посылать одиночные листы - тоже всё в порядке
Но в приведённом ниже коде принтер начинает "заикаться"
интервалы между листами становятся неодинаковыми
и в конце печати получается множество листов или полностью чёрных
или напротив совершенно нетронутых - на разных моделях по-разному
Заранее спасибо

Приложение:
  1.  
  2. procedure TForm1.Timer1Timer(Sender: TObject);
  3. begin
  4. while not Tble1.EOF do
  5. begin
  6. ...
  7. Form1.Print;
  8. ...
  9. end;
  10. end;


vadim_31 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: vadim_31 (статус: Посетитель)
Вопрос отправлен: 21 января 2011, 19:29
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 22 января 2011, 12:10; участников в обсуждении: 3.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 21 января 2011, 20:09 [#1]:

зачем на печать отправлять по таймеру?
vadim_31

vadim_31 (статус: Посетитель), 22 января 2011, 00:48 [#2]:

Потому что печать состоит из нескольких десятков документов
Причём интервал таймера значения не имеет - менял от 300 ms до 6 секунд!
min@y™

min@y™ (статус: Доктор наук), 22 января 2011, 10:04 [#3]:

Зачем такой брейнфакинг?
Я так понял, нужно напечатать что-то из DBGrid?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 22 января 2011, 10:11 [#4]:

если есть необходимость печатать по таймеру, то предусмотрите, приостановку таймера до окончания печати текущего документа.
перед циклом вывода на печать поставьте timer1.enabled:=false;
после цикла: timer1.enabled:=true;
vadim_31

vadim_31 (статус: Посетитель), 22 января 2011, 12:10 [#5]:

Тьфу! Простите идиота!Воткнул не тот код!
Код выглядел вот так:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (Printer.Printing) then exit;
if (not Printer.Aborted) then //optionally
if not Tble1.EOF then
begin
...
Form1.Print;
...
end;
Next;
end;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:26
Выполнено за 0.03 сек.