Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

Не работает печать в QReport   Найти похожие ветки 

 
karachi ©   (2004-12-21 01:21) [0]

В QReport создаю отчет, но только не через DataSet, а используя событие TQuickRep.OnNeedData. Функция выглядит следующим образом

procedure TfmReportAgents.qrAgentsNeedData(Sender: TObject;
 var MoreData: Boolean);
begin
 MoreData:=false;
 if not qRepAgents.Eof then
 begin
   Tel1.Caption:=qRepAgentstelephone.AsString;
   qRepAgents.Next;
   MoreData:=true;
 end;
end;


Но почему то после формирования отчета, не получается его распечатать. Нажимаешь кнопку "Печать" на форме предварительного просмотра, но ничего не происходит. В чем может быть проблема?


 
Германн ©   (2004-12-21 02:30) [1]

Имхо, что с принтером. Или с его драйвером.

Но, возможно, что и QR глючит. Его автор уже признавался в том, что у него есть проблемы с драйверами принтеров.


 
Семен Сорокин ©   (2004-12-21 10:30) [2]

procedure TfmReportAgents.qrAgentsNeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData:=false;
if not qRepAgents.Eof then
begin
  Tel1.Caption:=qRepAgentstelephone.AsString;
  qRepAgents.Next;
  MoreData:=true;
end
else
  qRepAgents.First

end;


 
karachi ©   (2004-12-21 11:43) [3]


end
else
 qRepAgents.First
end;

Так ведь этот кусок приводит к зацикливанию. И отчет формируется целую вечность


 
Семен Сорокин ©   (2004-12-21 11:48) [4]


> karachi ©   (21.12.04 11:43) [3]
> Так ведь этот кусок приводит к зацикливанию. И отчет формируется
> целую вечность

Вы проверили на практике?


 
Семен Сорокин ©   (2004-12-21 11:52) [5]

Объясню, флаг MoreData информирует о том, будем ли мы заходить в следующей итерации в эту процедуру.

Когда мы формируем отчет по Preview мы пробегаемся по элементам qRepAgents до конца - что мы и видим на экране, когда мы нажимаем кнопку Print из Preview, эта операция пробегает еще раз (по всем элементам qRepAgents), соответственно, надо выставить на начало, что же мы видим в коде:

 MoreData:=false;
 if not qRepAgents.Eof then
 begin
   Tel1.Caption:=qRepAgentstelephone.AsString;
   qRepAgents.Next;
   MoreData:=true;
 end
 else
   qRepAgents.First


именно это я и делаю, с учетом того что MoreData:=false, соответственно следующей итерации сюда не будет...

Надеюсь понятно объяснил?



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

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
6-1098390112
первый!
2004-10-22 00:21
2005.01.09
Прием разных пакетов на Один порт


1-1103745763
срочно
2004-12-22 23:02
2005.01.09


9-1095173674
Sphinx
2004-09-14 18:54
2005.01.09
Спрайты


8-1092253140
Константинов
2004-08-11 23:39
2005.01.09
Измерение уровня звукового сигнала.


14-1103283310
Koala
2004-12-17 14:35
2005.01.09
Какой DVD плеер посоветуете