Главная страница
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.054 c
6-16568
Sil
2003-12-01 17:59
2004.02.06
Моделирование сетей


1-16275
Пубертанец
2004-01-26 09:23
2004.02.06
Плагины на bpl


3-16193
chtr
2004-01-13 14:04
2004.02.06
Как запросом вставить данные из mdb в таблицу MSSQL?


14-16743
NsiSoft
2004-01-15 18:45
2004.02.06
ЧАТ!


3-16058
Ega23
2004-01-12 10:57
2004.02.06
Настройка Query Analyzer