Daniel Iwan Guest
|
Posted: Tue Jun 08, 2004 6:40 am Post subject: TPrinter with network printer |
|
|
Hello everyone!
I have a problem with using TCanvas Printer and network printer HP
LaserJet
It print just first page and throws blank all the rest.
WinNT with Borland Builder 5.
All works fine with my HP 3820 with USB printer (WinXP). It prints
correctly under debugger (step by step). Problems with buffering?
I pasted my code.
//------------------------------
void __fastcall ThPrintChart::Execute()
{
if( MessageBox(0,"Print ?", "Text", MB_YESNO | MB_ICONQUESTION) ==
IDYES)
{ Printer()->Orientation = poLandscape;
Printer()->Title = "Title";
int iPrinterH = Printer()->PageHeight;
int iPrinterW = Printer()->PageWidth;
int iSizeW = iPrinterW - 1;
int iSizeH = iPrinterH - 1;
PrinterRect = Rect( 0, 0, iSizeW, iSizeH);
PrinterCanvas = Printer()->Canvas;
PageCanvas = PageImage->Canvas;
AnsiString sFileName;
Printer()->BeginDoc();
while(*bStop != true)
{ try
{
if(!bPrintToFile)
DisplayIt();
if((!bPrintToFile) && Printer()->Printing)
{
PrinterCanvas->CopyMode = cmSrcCopy;
PrinterCanvas->CopyRect( PrinterRect, PageCanvas,
pRect->PageRect);
}
else
{
sFileName = IntToStr(pChartInfo->iActivePage) + ".bmp";
PageImage->Picture->SaveToFile(sFileName);
}
if((pChartInfo->iActivePage) >= (pChartInfo->iPageCount))
*bStop = true;
else
{
if(!bPrintToFile )
Printer()->NewPage();
ScrollIt();
}
}
catch(Exception& EPrinter)
{
}
} if(!bPrintToFile) Printer()->EndDoc(); //08.04.2004
}
PageImage->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall ThPrintChart::DisplayIt(void)
{
PageImage->Canvas->CopyMode = cmWhiteness;
PageImage->Canvas->CopyRect( pRect->PageRect, PageImage->Canvas,
pRect->PageRect);
PageImage->Visible = false;
ChartView->PrintPartialCanvas( PageImage->Canvas, pRect->ChartRect);
PageImage->Canvas->TextOut(pText->iTextLeft, pText->iTextBottom,
pText->sText1);
PageImage->Canvas->TextOut(pText->iTextLeft, pText->iTextBottom +
pText->iSize, pText->sText2);
PageImage->Canvas->TextOut(pText->iTextLeft, pText->iTextBottom +
2*pText->iSize, pText->sText3);
pText->sText4 = IntToStr(pChartInfo->iActivePage +
pChartInfo->iFirstPage - 1) + " (";
pText->sText4 += IntToStr(pChartInfo->iMaxPage);
pText->sText4 += ")";
PageImage->Canvas->TextOut(pText->iTextLeft, pText->iTextBottom +
3*pText->iSize, pText->sText4);
PageImage->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall ThPrintChart::ScrollIt(void)
{
pChartInfo->iActivePage = pChartInfo->iActivePage + 1; //13.04.2004
ChartView->BottomAxis->Scroll(pChartInfo->iSamplesPerPage, false);
}
//---------------------------------------------------------------------------
It sometimes works better when I add two Sleep(1000); lines before and
after CopyRect line...
Any suggestions? Thank you for your answers
|
|