освобождение памяти

frrfrr
отредактировано 04:35 Раздел: FastReport 2.xx VCL
Здравствуйте !
С помощью fastReport (2.4) происходит печать содержимого нескольких документов. Каждый документ выглядит как бланк с определенными значениями Top и Left элемента бланка данных. Печать происходит на матричном принтере.
При печати используются только компоненты mv (type TfrMemoView), без использования TfrBandView.
Вот код печати одного бланка:

frReport.Pages.Clear;
frReport.Pages.Add;
page := frReport.Pages[0];

sp.First;
while not sp.Eof do begin
v := TfrMemoView.Create;
v.Alignment := 0;
v.SetBounds(
sp.FieldByName('posleft').AsInteger,
sp.FieldByName('postop').AsInteger,
200, 16);
v.Memo.Add(sp.FieldByName('valueDraw').AsString);
page.Objects.Add(v);
sp.Next;
end;
Result := frReport.PrepareReport;
if not Result then exit;
frReport.ExportTo(frTextExport, printerName);

Здесь sp - хранимая процедура, возвращающая набор данных с координатами Top и Left. При печати нескольких документов данный код вызывается для каждого документа.

Вопросов два:
1. Достаточно ли выполнения frReport.Pages.Clear; для освобождения памяти всех ранее созданных v := TfrMemoView.Create; ?

2. Обнаружилось, что некоторые элементы данных, несмотря на равенство
значений sp.FieldByName('postop').AsInteger, печатаются на разных расстояниях Top.
В чем может быть причина ? Набор данных sp сортирован как order by postop, posleft.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.