Форум: "Основная";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];
ВнизМастера ! Где же вы ? Помогите же !!!!! Найти похожие ветки
← →
Мефодий (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c