Иллюстрированный самоучитель по Delphi 7 для профессионалов

Соединения с источниками данных в приложении. Компонент TRvDataSetConnection.

Когда курсор устанавливается на первую строку набора данных, вызывается метод-обработчик:

property OnFirst: TRPConnectcrEvent;

…а при перемещении на следующую запись можно использовать метод:

property OnNext: TRPConnectorEvent;

Если генератор отчетов нашел нужную запись и считал ее для представления в отчете, для отслеживания этого события разработчик может использовать метод:

property OnGetRow: TRPConnectorEvent;

При достижении последней записи набора вызывается метод-обработчик:

type
TRPEOFEvent = procedure(Connection: TRvCustomConnection; var Eof: Boolean);
property OnEOF: TRPEOFEvent;

При повторном использовании набора данных, например при печати отчетов "один-ко-многим" или при группировке записей, соединение обновляется. При этом все параметры соединения и набора данных приводятся к исходному состоянию и вызывается метод-обработчик:

property OnRestore: TRPConnectorEvent;

Кроме этого, при печати сложных отчетов генератору отчетов может понадобиться некоторое подмножество отсортированных записей набора данных.

Перед началом сортировки и фильтрации и после их завершения вызываются пары методов-обработчиков:

property OnGetSort: TRPConnectorEvent;
property OnSetSort: TRPConnectorEvent;

…и:

property OnGetFilter: TRPConnectorEvent;
property OnSetFilter: TRPConnectorEvent;

Однако вы можете обеспечить дополнительную фильтрацию записей, передаваемых из набора данных в отчет. Для этого используется метод-обработчик:

type
TRPValidateRowEvent = procedure(Connection: TRvCustomConnection;
var ValidRow: Boolean);
property OnValidateRow: TRPValidateRowEvent;

Параметр ValidRow управляет отправкой отдельной записи отчету: при значении True запись пропускается в отчет.

Рассмотрим простой пример. Для отчета, печатающего всем нам хорошо известную таблицу COUNTRY из демонстрационной базы Delphi, можно ограничить список стран, а также исключить страны с площадью территории, меньше заданной:

procedure TForml.RvSomeConValidateRow(Connection: TRvCustomConnection;
var ValidRow: Boolean);
begin
with TRvDataSetConnection(Connection) do
ValidRow: = DataSet.FieldByName('Area').AsInteger > 1000000;
end;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.