Суббота, 15.08.2020
Меню сайта
Вход на сайт
Логин:
Пароль:
Поиск
Статистика
Рейтинг@Mail.ru
Яндекс цитирования
Реклама
C++DelphiПрочее

Пример использования компонента RvCustomConnection в Delphi
В данной статье я попытаюсь описать пример, использования компонента RvCustomConnection в Delphi. Данный компонент, не всегда требуется в написании программы с применением отчетов в Rave. Но есть некоторые моменты, в которых применение этого компонента необходимо.Например. Есть некая форма отчета (шаблон), в которой основное содержание или данные, содержится в некой базе, но необходимы поля которые не требуется описывать в базе, и обязательны к выводу на печать.
По сути, компонент RvCustomConnection присоединяет пользовательские данные, сгенерированные через события. Именно эти события описывает данная статья.

Итак. Первым делом нам необходимо разместить все необходимые компоненты. А именно.

RvProject. Ключевой компонент, осуществляющий доступ к визуальным отчетам, созданным с помощью Rave.

RvSystem. Включает в себя стандартный принтер и предварительный просмотр.

RvCustomConnection. Подсоединяет пользовательские данные (сгенерированные через события) к DirectDataViews, созданные с помощью визуального редактора Rave.

Разместим два текстовых поля и одну кнопку на форме нашего приложения. (Edit1, Edit2, Button1).
Далее нам нужно описать события (OnOpen, OnGetCols, OnGetRow);

OnOpen. В этом событие мы определим количество необходимых полей. В нашем случае будет два поля.

Code
procedure TVSForm1.RvCustomConnectionOpen(Connection: TRvCustomConnection);  
begin  
Connection.DataRows:=2;  
end;

OnGetCols. В этом событие, создаем поля (Text1, Text2) и определяем их параметры.

Code
procedure TForm1.RvCustomConnectionGetCols(Connection: TRvCustomConnection);  
begin  
Connection.WriteField('Text1',dtString,10,' Text1','');  
Connection.WriteField('Text2',dtString,10,' Text2','');  
end;

OnGetRow. В данном событии передаем значения компонентов (Edit1, Edit2) в созданные поля. Данные Edit1 записываем в поле Text1, Edit2 в Text2 соответственно.

Code
procedure TForm1.RvCustomConnectionGetRow(Connection: TRvCustomConnection);  
begin  
Connection.WriteStrData('', Edit1.Text);  
Connection.WriteStrData('', Edit2.Text);  
end;

В событии Button1Click кнопки Button1 следующий код:

Code
procedure TForm1.Button1Click(Sender: TObject);  
begin  
RvProject1.Execute;  
end;

Далее запускаем визуальный редактор Rave двойным нажатием на компонент RvProject. Но перед тем, как что либо сделать в редакторе Rave, нам необходимо запустить наше приложение. Тем самым описанные события, сгенерируют поля, и они будут видны в редакторе.
Теперь в самом редакторе, размещаем поля данных. Их у нас два. Для того, чтобы связать их с нашими данными нам необходимо создать связь с RvCustomConnection. См. рис.

После этого. В менеджере проекта, должно появится следующие данные: см. рис.

Далее сопоставим наши поля с данными, определив в параметрах полей значения DataField и DataView:

Если все сделано верно, то результат должен получится как на рисунке ниже.

Delphi 4123 05.01.2010
Похожие материалы:
Всего комментариев: 2
0  
Виталий   (15.04.2012 21:42) Материал
Если необходимо сделать вывод двух разных отчетов с разными наборами полей-данных, создал по два RvProject, RvSystem, RvCustomConnection - где указывается связка RvCustomConnection с двумя первыми, то есть какой им использовать при открытии RvProject?
0  
selbus   (21.04.2012 02:43) Материал
selbus
Сами связи хранятся непосредственно в самом файле отчета. Создавать два RvProject нет смысла, достаточно одного. А нужный отчет вызывается RvProject.Open; предварительно определив отчет в свойстве ProjectFile.
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]