Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.017 c
1-16296
XenonXX
2004-01-20 03:55
2004.02.06
Delphi глючит?!?


4-16789
mRodion
2003-12-02 10:24
2004.02.06
Сделать элемент TlistView в фокусе


1-16361
lkl
2004-01-24 12:37
2004.02.06
Помогите с фильтрацией в Edit???


1-16270
SnapIn
2004-01-23 17:48
2004.02.06
Создать экземпляр объекта по названию класса в строке


3-16112
Volodya_
2004-01-16 01:05
2004.02.06
DBComboBox




   Наверх