Code Based - General
How do you print Memos from a database using TMemoBuf?
The following example prints the "Notes" memo field of the current record from Table1. This is accomplished by using TMemoBuf and is quite easily done.
Delphi Example:
uses
RPMemo;
procedure TForm1.ReportSystem1Print(Sender: TObject);
var
MemoBuf: TMemoBuf;
Stream: TMemoryStream;
begin
with Sender as TBaseReport do begin
MemoBuf := TMemoBuf.Create;
Stream := TMemoryStream.Create;
try
TBlobField(Table1.FieldByName('Notes')).SaveToStream(Stream);
Stream.Position := 0;
MemoBuf.LoadFromStream(Stream, Stream.Size);
MemoBuf.PrintStart := 1.0; // Set memo left margin position
MemoBuf.PrintEnd := 4.0; // Set memo right margin position
PrintMemo(MemoBuf, 0, false);
finally
MemoBuf.Free;
Stream.Free;
end; { tryf }
end; { with }
end;
C++Builder Example:
#include "RPMemo.hpp"
void __fastcall TForm1::ReportSystem1Print(TObject *Sender)
{
TMemoBuf* MemoBuf;
TMemoryStream* Stream;
TBlobField* BlobField;
TBaseReport* bp = dynamic_cast(Sender);
MemoBuf = new TMemoBuf();
Stream = new TMemoryStream();
try {
BlobField = dynamic_cast(Table1->FieldByName("Notes"));
BlobField->SaveToStream(Stream);
Stream->Position = 0;
MemoBuf->LoadFromStream(Stream, Stream->Size);
MemoBuf->PrintStart = 1.0; // Set memo left margin position
MemoBuf->PrintEnd = 4.0; // Set memo right margin position
bp->PrintMemo(MemoBuf, 0, false);
}
__finally {
delete MemoBuf;
delete Stream;
};
}