Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.019 c
1-88874
Yuri Btr
2002-06-14 12:48
2002.06.27
Reset (file,mode)


1-88856
Vasya!
2002-06-17 18:32
2002.06.27
Где можно найти инфу, как юзать LISTVIEW?


14-89007
lipskiy
2002-05-22 22:36
2002.06.27
Вот уж такого я не ожидал :( {Снова про базу готового кода UBPFD}


8-88971
Диана
2002-02-16 12:30
2002.06.27
Заставка


1-88823
Darij
2002-06-17 05:47
2002.06.27
Запуск DLL из командной строки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский