Ponizej zamieszczam kod zrodlowy z helpa c++ Cuilder. Drukuje on zawartosc komponentu PageControl jednak na stronie A4 zajmuje może 1/10 rzeczywistego rozmiaru. W widocznym kodzie istnieje umieszczenie tego komponentu w dowolnym miejscu na wydruku natomiast co zrobic aby ona sie drukowal na calej stronie. Wiem ze trzeba pobrac rozmiar strony, na ktorej bedzie drukowane i przeskalowac, ale jak go wcisnać do tego kodu. Probowalem na rozne sposoby.

PrintDialog1->Options.Clear(); 
  PrintDialog1->Options << poPageNums << poSelection; 
  PrintDialog1->FromPage = 1; 
  PrintDialog1->MinPage = 1; 
  PrintDialog1->ToPage = PageControl1->PageCount; 
  PrintDialog1->MaxPage = PageControl1->PageCount; 
  if (PrintDialog1->Execute()) 
  { 
    int Start, Stop; 
    // determine the range the user wants to print 
    switch (PrintDialog1->PrintRange) 
    { 
      case prSelection: 

        Start = PageControl1->ActivePage->PageIndex; 
        Stop = Start; 
        break; 
      case prPageNums: 
        Start = PrintDialog1->FromPage - 1; 
        Stop =  PrintDialog1->ToPage - 1; 
        break; 
      default:  // prAllPages 
        Start = PrintDialog1->MinPage - 1; 
        Stop = PrintDialog1->MaxPage - 1; 
        break; 
    } 
    // now, print the pages 
    Printer()->BeginDoc(); 
    for (int i = Start; i <= Stop; i++) 

    { 
      PageControl1->Pages[i]->PaintTo(Printer()->Handle, 10, 10); 
      if (i != Stop) 
        Printer()->NewPage(); 
    } 
    Printer()->EndDoc(); 
  } 

Ciekawe jest rozwiazanie ponizsze w przypadku komponentu Memo jednak tu powstaje problem, ze drukowanie odbywa sie tekstu, ktory sie w nim znajduje natomiast elementy takie jak edit czy label ktore chcialbym umiescic nie uda sie wydrukowac.
c++:

TPrinter *Prntr = Printer();
TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
Prntr->BeginDoc();
for( int i = 0; i < Memo1->Lines->Count; i++)
Prntr->Canvas->TextOut(200,200 + (i *
Prntr->Canvas->TextHeight(Memo1->Lines->Strings[i])),
Memo1->Lines->Strings[i]);
Prntr->Canvas->Brush->Color = clBlack;
Prntr->Canvas->FrameRect(r);
Prntr->EndDoc();

nad czym ubolewam. Moze sie jednak da:)