PageControl创建的多页面怎么打印??

ly_cong 2006-08-18 04:33:14
在Form1上有PageControl1、PageControl2、PageControl3,每个PageControl上都有画出的图形和用于说明的文字,怎么保存、打印预览、打印??
请各位高手帮助。
分数不够可专贴给分。
...全文
404 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueDeepOcean 2006-09-04
  • 打赏
  • 举报
回复
寺地。
YJS050320001 2006-09-03
  • 打赏
  • 举报
回复
蓝姐说的很详细了 特来学习
zerofantasy 2006-09-03
  • 打赏
  • 举报
回复
to ly_cong:
你说的问题我刚才也遇到了,你忘了设定bmp->width和bmp->height。
BlueDeepOcean 2006-09-02
  • 打赏
  • 举报
回复
你把函数用错了~~
Graphics::TBitmap *bmp = new Graphics::TBitmap;
int Width = mainForm->Width;
int Height =mainForm->Height;
bmp->Canvas->CopyRect(Rect(0,0,Width,Height),
Canvas,
Rect(0,0,Width,Height));
bmp->SaveToFile("d:\\FormPages.bmp");
ly_cong 2006-09-02
  • 打赏
  • 举报
回复
Graphics::TBitmap *bmp = new Graphics::TBitmap;
int Width = mainForm->Width;
int Height =mainForm->Height;
bmp->Canvas->CopyRect(Rect(0,0,Width,Height),
bmp->Canvas,Rect(0,0,Width,Height));
bmp->SaveToFile("d:\\FormPages.bmp");

运行后,保存了一个图像,是0字节,什么也没有
那里错了??
急也
BlueDeepOcean 2006-09-01
  • 打赏
  • 举报
回复
up?
ly_cong 2006-09-01
  • 打赏
  • 举报
回复
up
BlueDeepOcean 2006-08-25
  • 打赏
  • 举报
回复
给出

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *bmp = new Graphics::TBitmap;
bmp->Width = PageControl1->ClientWidth;
bmp->Height = PageControl1->ClientHeight * PageControl1->PageCount;
for (int pidx = 0;pidx < PageControl1->PageCount;pidx ++)
{
PageControl1->ActivePageIndex = pidx;
bmp->Canvas->CopyRect(Rect(0,
PageControl1->Pages[pidx]->ClientHeight * pidx,
bmp->Width,
PageControl1->Pages[pidx]->ClientHeight * (pidx + 1)),
PageControl1->Canvas,
PageControl1->Pages[pidx]->ClientRect);
}
//bmp->SaveToFile("c:\\PageControl_Pages.bmp"); //测试用

TPrinter *p = new TPrinter;

p->BeginDoc();

p->Canvas->CopyRect(Rect(0,0,p->PageWidth,p->PageHeight),bmp->Canvas,Rect(0,0,p->PageWidth,p->PageHeight));

p->EndDoc();

delete p;
p = NULL;
delete bmp;
bmp = NULL;
}
//---------------------------------------------------------------------------
ln_cong 2006-08-25
  • 打赏
  • 举报
回复
up again
BlueDeepOcean 2006-08-25
  • 打赏
  • 举报
回复
修改一哈:
Graphics::TBitmap *bmp = new Graphics::TBitmap;
bmp->Width = PageControl1->ClientWidth;
bmp->Height = PageControl1->ClientHeight * PageControl1->PageCount;
for (int pidx = 0;pidx < PageControl1->PageCount;pidx ++)
{
PageControl1->ActivePageIndex = pidx;
bmp->Canvas->CopyRect(Rect(0,
PageControl1->Pages[pidx]->ClientHeight * pidx,
bmp->Width,
PageControl1->Pages[pidx]->ClientHeight * (pidx + 1)),
PageControl1->Canvas,
PageControl1->Pages[pidx]->ClientRect);
}
//bmp->SaveToFile("c:\\PageControl_Pages.bmp"); //测试用

TPrinter *p = new TPrinter;

p->BeginDoc();

p->Canvas->CopyRect(Rect(0,0,p->PageWidth,p->PageHeight),bmp->Canvas,Rect(0,0,bmp->Width,bmp->Height)); //修改了这处

p->EndDoc();

delete p;
p = NULL;
delete bmp;
bmp = NULL;
ly_cong 2006-08-24
  • 打赏
  • 举报
回复
up
ly_cong 2006-08-23
  • 打赏
  • 举报
回复
没有人能解决??
ln_cong 2006-08-22
  • 打赏
  • 举报
回复
up
bgqy2000 2006-08-21
  • 打赏
  • 举报
回复
这个要好好学学,呵呵。兰色姐姐能说详细点不,最好给点代码,嘿嘿。
ln_cong 2006-08-20
  • 打赏
  • 举报
回复
不明白,和一般的打印有什么区别?/
ln_cong 2006-08-20
  • 打赏
  • 举报
回复
up
qvcbui 2006-08-19
  • 打赏
  • 举报
回复
创意、自由、灵活,超强的报表功能,
独特的双数据源连接,全功能的表格组件!

http://www.anylib.com
ly_cong 2006-08-19
  • 打赏
  • 举报
回复
up
BlueDeepOcean 2006-08-18
  • 打赏
  • 举报
回复
其实不是很难,你可以利用Canvas的CopyRect的方法,将Form上的每个PageControl的区域通过TRect的方式保存下来,并利用CopyRect的方式保存到一个临时动态生成的Bitmap上,保存为文件;
如果打印的话,可以利用TPrinter *p = new TPrinter;的方式进行图片的打印,方法也很简单,就利用p->Canvas->CopyRect()函数将bmp的内容拷贝到打印机上,进行打印;
预览过程就是重画的过程。道理和利用CopyRect的方式拷贝到Bitmap上的方法一致。

13,873

社区成员

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

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