Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

Проблема с отображением поля типа dtGraphic в отчете Rave Report   Найти похожие ветки 

 
Денис Евлентьев   (2004-01-28 10:11) [0]

Проблема с отображением поля типа dtGraphic в отчете Rave Report в случае использования
в качестве источника данных объекта типа TRvCustomConnection.
При назначении в отчете компоненту Bitmap в качестве источника данных поля получаемого из
TRvCustomConnection и запуске отчета получаем Access Violation.

Для воспроизведения ситуации выполняем следующие действия.

Добавляем на форму TImage и вставляем туда какой-нибудь bitmap.
Добавляем на форму источник данных TRvCustomConnection, задаем обработчик OnGetCols.
procedure TForm1.RvCustomConnection1GetCols(Connection: TRvCustomConnection);
begin
Connection.WriteField("PICTURE", dtGraphic, 10, "PICTURE", "PICTURE");
end;

Задаем обработчик OnGetRow.
procedure TForm1.RvCustomConnection1GetRow(
Connection: TRvCustomConnection);
var
Buffer: PChar;
Stream: TMemoryStream;
begin
if Assigned(Image1.Picture.Bitmap) then
begin
Stream := TMemoryStream.Create;
try
Image1.Picture.Bitmap.SaveToStream(Stream);
Stream.Position := 0;
Buffer := PChar(AllocMem(Stream.Size + 1));
Stream.ReadBuffer(Buffer^, Stream.Size);

Connection.WriteBlobData(Buffer^, Stream.Size);
finally
Stream.Free;
if Assigned(Buffer) then
FreeMem(Buffer);
end;
end
else Connection.WriteNullData;
end;

Задаем обработчик OnOpen
procedure TForm1.RvCustomConnection1Open(Connection: TRvCustomConnection);
begin
RowCount := 0; // Переменную RowCount нужно объявить в классе формы
end;

Задаем обработчик OnEof
procedure TForm1.RvCustomConnection1EOF(Connection: TRvCustomConnection;
var Eof: Boolean);
begin
Eof := RowCount > 1;
Inc(RowCount);
end;


 
Zergling ©   (2004-01-28 12:41) [1]

Я гружу растр из файла (переделаешь я думаю) :)

var
I: Integer = 1;

procedure TForm1.RvCustomConnection1Open(Connection: TRvCustomConnection);
begin
Connection.DataRows := 3;
end;

procedure TForm1.RvCustomConnection1GetCols(
Connection: TRvCustomConnection);
begin
// Определяем какие будут поля
with Connection do
begin
WriteField("Graph", dtGraphic, 20, "Graph", "");
end;
end;

procedure TForm1.RvCustomConnection1GetRow(
Connection: TRvCustomConnection);
var
MB: TMemoryStream;
Buf: PByte;
begin
with Connection do
begin
try
MB := TMemoryStream.Create;
MB.LoadFromFile("C:\1.bmp");
MB.Position := 0;
Buf := PByte(AllocMem(MB.Size + 1));
MB.ReadBuffer(Buf^, MB.Size);
if I <= 3 then
begin
WriteBlobData(Buf^, MB.Size);
end else
begin
WriteNullData;
end;
finally
MB.Free;
if Assigned(Buf) then FreeMem(Buf);
end;
end; // with
Inc(I);
end;

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



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
14-16639
MV
2004-01-14 15:54
2004.02.06
Все равно Делфай не брошу!


8-16532
Layner
2003-09-30 14:48
2004.02.06
Требуется совет по выводу видео картинки на форму.


1-16299
Mihey
2004-01-24 00:29
2004.02.06
Обработка cm_mouseleave в ядре


14-16745
Rauf
2004-01-15 23:01
2004.02.06
Что за процесс cisvc.exe???


1-16457
Piero
2004-01-27 23:25
2004.02.06
Кодировка в Install Shield