打印问题,我的程序为什么只打印一半?

GodBirdFlying 2003-07-15 12:25:29
这段代码的意思是打印StringGrid里的所有数值,为什么打印一半就换页了?


Printer()->BeginDoc();

int SizeInMMX = GetDeviceCaps( Printer()->Canvas->Handle, LOGPIXELSX );
int SizeInMMY = GetDeviceCaps( Printer()->Canvas->Handle, LOGPIXELSY );
double PointX = double(SizeInMMX)/72.0;
double PointY = double(SizeInMMY)/72.0;
int YStep = PointY*20;
int XStep = PointX*40;
int RowsPPage = Printer()->PageHeight/(PointY*20);//每叶的行数
Printer()->Canvas->Font->Size = PointX*2;
Printer()->Canvas->Brush->Color = clWhite;
Printer()->Canvas->FillRect(Rect(0,0,Printer()->PageWidth,Printer()->PageHeight));

for(int i = 0;i<=5; i++)
{
for(int m = 1; m<=RowsPPage; m++)
{
for(int j = 1; j<StringGrid1->ColCount; j++)
{
if(StringGrid1->Cells[j][m+i*RowsPPage]!="")
Printer()->Canvas->TextOutA(j*XStep, m*YStep, StringGrid1->Cells[j][m+i*RowsPPage]);
}
}

Printer()->NewPage();
}
Printer()->EndDoc();
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
心平至和 2003-07-27
  • 打赏
  • 举报
回复
//从程序里摘了一点,懒的整理了,自已看看吧,也许有用。

PRINTDLG *PrintInfo=GetPrintDlg();//一个VC写的DLL,内调PrintDlg,返回的PRINTDLG.
//注意,本人在BC里调用PrintDlg没成功,谁做成了传给我个例子。
if(PrintInfo==NULL)
{
//ShowMessage("PrintInfo=NULL");
return;
}

DEVMODE *pDev=(DEVMODE*)GlobalLock(PrintInfo->hDevMode);
int PageLen=pDev->dmPaperLength;//得到长度 (微米)
int PageWidth=pDev->dmPaperWidth;//宽度 (微米)
char* Name=pDev->dmDeviceName;
GlobalUnlock(PrintInfo->hDevMode);
HDC hPrinter=PrintInfo->hDC;
if(hPrinter==NULL)
{
// ShowMessage("PrintInfo->hPrinter=NULL");
return;
}
print.SetPrintDC(hPrinter);
SetMapMode(hPrinter,MM_LOMETRIC);//注意这里。
DOCINFO Info;
Info.cbSize=sizeof(Info);
Info.lpszDocName="XXXXXXX";
Info.lpszOutput=NULL;
Info.lpszDatatype=NULL;
Info.fwType=0;
SetBkMode(hPrinter,TRANSPARENT);
StartDoc(hPrinter,&Info);
print.PrintGdBz(60,40,GdClList,BzInfo,PageLen,PageWidth);
EndDoc(hPrinter);
DeleteDC(hPrinter);
if(PrintInfo->hDevMode)
GlobalFree(PrintInfo->hDevMode);
if(PrintInfo->hDevNames)
GlobalFree(PrintInfo->hDevNames);
delete PrintInfo;
delete BzInfo;
--------------------------------------------------
print.PrintGdBz(60,40,GdClList,BzInfo,PageLen,PageWidth);
print是一个类,在其中可根据PageLen来进行换页。

EndPage(hPrinter);
StartPage(hPrinter);
「已注销」 2003-07-27
  • 打赏
  • 举报
回复
帮你up
GodBirdFlying 2003-07-27
  • 打赏
  • 举报
回复
怎么没人? 这个问题因该不至于此吧
「已注销」 2003-07-15
  • 打赏
  • 举报
回复
头晕…………闪一闪 让高手挤过来

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧