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; }; }