Вниз
Скачать: 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-16383
Бывающий
2004-01-23 16:39
2004.02.06
TOleContainer. Мышь ведет себя странно. Не select-ит Помогите ПЛЗ


14-16626
HoH
2004-01-14 20:25
2004.02.06
сайт


6-16544
V.exeR
2003-12-02 06:57
2004.02.06
И еще... Как узнать размер и время создания файла


1-16402
baataar
2004-01-28 13:23
2004.02.06
где иконка от проекта хранится? не могу сменить иконку


1-16212
ivanenko
2004-01-29 00:42
2004.02.06
Как узнать имена библиотек DLL, которые требуются для EXE




   Наверх