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

Вниз

Мастера ! Где же вы ? Помогите же !!!!!   Найти похожие ветки 

 
Мефодий   (2002-06-13 20:12) [0]

Длина документа заранее не известна. Цель состоит в том, чтобы в RunTime составить перечень TQRLabel по числу строк документа и печатать на нескольких (заранее не известно скольких)листах.
В проекте есть Form1 c Button1 и QuickReport1 c DetailBand. На клик кнопки я прописал:

procedure TForm1.Button1Click(Sender: TObject);
var Lbl:TQRLabel;
i,k: integer;
begin
with QuickReport1 do
begin
k := 1;
for i := 1 to 500 do
begin
Lbl := TQRLabel.Create(Self);
Lbl.Parent := Bands.DetailBand;
Lbl.AutoStretch := True;
Lbl.Font.Name := "Arial";
Lbl.Font.Size := 10;
Lbl.Top := 2*Lbl.Font.Size*(k-1);
Lbl.Left := 20;
Lbl.Caption := "Test "+IntToStr(i);
Inc(k);
if (i mod 50) = 0 then
begin
NewPage;
k := 1;
end;
end;
Preview;
end;
end;

При выполнении выдается ошибка "Access Violation" на строке NewPage.
Где ошибка ?
Спасибо.


--------------------------------------------------------------------------------
Мефодий (11.06.02 21:59)
Мастера где же вы ?
Отзовитесь !!!!!


 
Cobalt ©   (2002-06-14 06:23) [1]

Попробуй with TQRLabel.Create(Self) do
begin
//bla-bla-bla
end;
А без добавления Меток вызвать NewPage? Будет AV?


 
Мефодий   (2002-06-14 09:02) [2]

Что-то не не могу растолковать слова:

А без добавления Меток вызвать NewPage?
Будет AV?

Можно ли поподробнее ?
Спасибо.


 
Cobalt ©   (2002-06-14 09:35) [3]

Предлагаю это ВАМ, потому, что я с QR неработал, могу только натолкнуть вас на мысль.
1)procedure TForm1.Button1Click(Sender: TObject);
var Lbl:TQRLabel;
i,k: integer;
begin
with QuickReport1 do
begin
k := 1;
for i := 1 to 500 do
begin
with TQRLabel.Create(Self) do
begin
Parent := Bands.DetailBand;
AutoStretch := True;
Font.Name := "Arial";
Font.Size := 10;
Top := 2*Lbl.Font.Size*(k-1);
Left := 20;
Caption := "Test "+IntToStr(i);
end;
Inc(k);
if (i mod 50) = 0 then
begin
NewPage;
k := 1;
end;
end;
Preview;
end;
end;

2)Метка = Label
AV = Access Violation извиняюсь за сленг
т.е.:
procedure TForm1.Button1Click(Sender: TObject);
begin
with QuickReport1 do
begin
k := 1;
for i := 1 to 500 do
begin
Inc(k);
if (i mod 50) = 0 then
begin
NewPage;
k := 1;
end;
end;
Preview;
end;
end;


 
Lusha ©   (2002-06-14 09:56) [4]

>Мефодий (13.06.02 20:12)
А, собственно, зачем создавать TQRLabel по числу строк... Достаточного одного, а уж плодить их проблема самого TQuickRep...


 
Fiend ©   (2002-06-14 10:03) [5]

Не очень люблю квикрепорт, но помнится решал подобную фишку так:
делал шаблог отчёта как обычно (бэнды там и прочее).
А потом у квикрепорта есть событие OnNeedData, в нём писал обработчик этого события, которое вызывается помоему когда требуются данные для детализации, т.е. в этом событии заполнял метки на детальном бэнде, и мне не приходилось их плодить.
Может это вас спасёт


 
Роман Василенко ©   (2002-06-14 10:29) [6]

Помнится, там надо было еще и сам Band создавать с указанием его типа rbXxxxx. Потому и не куса... потому и Access Violation.


 
Мефодий   (2002-06-14 11:58) [7]

> Cobalt ©
В первом варианте та же ошибка в строке
Top := 2*Lbl.Font.Size*(k-1);
Во втором варианте та же ошибка в строке
NewPage;

> Lusha ©
А, собственно, зачем создавать TQRLabel по числу строк... Достаточного одного, а уж плодить их проблема самого TQuickRep...
В каком количестве плодить и где распологать известно только в RunTime. И проблема не в том, как плодить а в том, чтобы отчет заполнялся постранично. Если не прописывать NewPage, то все строки печатаются на одной странице и из 500 строк в Preview видны бывают только последние 50(с 450 по 500).

> Fiend ©
Количество и расположение на листе меток заранее не известно.



 
Lusha ©   (2002-06-14 12:06) [8]

>Мефодий (14.06.02 11:58)
Вот именно... Внимательно прочитайте Fiend © (14.06.02 10:03) или познакомтесь с TQRStringsBand...



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
3-88707
Timur_2002
2002-06-03 11:56
2002.06.27
Вопрос по InterBase


3-88736
PETR_
2002-06-04 11:18
2002.06.27
DBGrid и логические поля


1-88875
sasa2001
2002-06-14 10:19
2002.06.27
Как проверить зарег-ан ли в системе midas.dll и если нет сделать


14-89031
Song
2002-05-27 15:24
2002.06.27
Скажите название и/или исполнителя песни... Не могу, пристала...


1-88800
deymon
2002-06-14 21:57
2002.06.27
Подскажите, можно ли....