void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (PrintDialog1->Execute()) {
Printer()->Canvas->Font = Memo1->Font; //Asignamos la fuente de impresion
int lineHeight = abs(MulDiv(Printer()->Canvas->Font->Size,
GetDeviceCaps(Printer()->Handle, LOGPIXELSY), 72)); // determinamos altura de la linea
lineHeight *= 1.4;
int linesPerPage = (Printer()->PageHeight/lineHeight) - 2;
int lineCount = 2; // iniciamos la impresion en la linea 2 para dejar margen (en vez de la 0)
Printer()->BeginDoc();
for (int i=0;i < Memo1->Lines->Count;i++) {
if (lineCount++ == linesPerPage) {
lineCount = 2;
Printer()->NewPage();
}
String s = Memo1->Lines->Strings[i];
Printer()->Canvas->TextOut(0, lineCount * lineHeight, s);
}
Printer()->EndDoc();
}
}