社区
VCL组件使用和开发
帖子详情
使用QR制作报表,如何定义纸张等,使得报表能正确输出到LQ1600KIII的连续纸上?
nononono
2004-07-06 01:44:36
现在定义的报表预览正确,打印时右边部分被截掉。
问题解决后,马上给分。
...全文
106
10
打赏
收藏
使用QR制作报表,如何定义纸张等,使得报表能正确输出到LQ1600KIII的连续纸上?
现在定义的报表预览正确,打印时右边部分被截掉。 问题解决后,马上给分。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nononono
2004-07-06
打赏
举报
回复
问题没有解决,还是给分吧。我决定使用FastReport,反正报表不等着要。
nononono
2004-07-06
打赏
举报
回复
ch_builder(春辉)的代码虽然不能解决这个问题,也还是比较有用的。不过错误太多了,我整理了一下,重新贴出来,基本可以直接使用。供大家参考。
DEVMODE *pDev;
LPPAGESETUPDLG mylp=new PAGESETUPDLG;
memset((void *)mylp,0,sizeof(PAGESETUPDLG));
mylp->lStructSize=sizeof(PAGESETUPDLG);
mylp->hwndOwner=FORM_Rep_KCZM_A->Handle;
mylp->Flags=PSD_RETURNDEFAULT;
PageSetupDlg( mylp );
int OldPaperSize;
int OldOrientation;
int OldLeft;
int OldRight;
int OldTop;
int OldBottom;
if (mylp->hDevMode!=NULL)
{
pDev=(DEVMODE *)GlobalLock(mylp->hDevMode);
pDev->dmPaperSize = OldPaperSize;
pDev->dmOrientation = OldOrientation;
mylp->rtMargin.left = OldLeft;
mylp->rtMargin.right = OldRight;
mylp->rtMargin.top = OldTop;
mylp->rtMargin.bottom = OldBottom;
GlobalUnlock(mylp->hDevMode);
mylp->Flags=PSD_MARGINS|PSD_INHUNDREDTHSOFMILLIMETERS;
if(PageSetupDlg(mylp))
{
pDev=(DEVMODE *)GlobalLock(mylp->hDevMode);
OldPaperSize =pDev->dmPaperSize;
if(OldPaperSize>28)
OldPaperSize=9;//A4
OldOrientation = pDev->dmOrientation;
OldLeft = mylp->rtMargin.left;
OldRight = mylp->rtMargin.right;
OldTop = mylp->rtMargin.top;
OldBottom = mylp->rtMargin.bottom;
FORM_Rep_KCZM_A->QuickRep1->Page->Orientation =OldOrientation-1;
FORM_Rep_KCZM_A->QuickRep1->Page->PaperSize = OldPaperSize;
FORM_Rep_KCZM_A->QuickRep1->Page->LeftMargin =OldLeft/100;
FORM_Rep_KCZM_A->QuickRep1->Page->RightMargin =OldRight/100;
FORM_Rep_KCZM_A->QuickRep1->Page->TopMargin =OldTop/100;
FORM_Rep_KCZM_A->QuickRep1->Page->BottomMargin=OldBottom/100;
GlobalUnlock(mylp->hDevMode);
}
GlobalFree(mylp->hDevMode);
}
delete mylp;
FORM_Rep->QuickRep1->Prepare();
FORM_Rep->QuickRep1->Preview();
nononono
2004-07-06
打赏
举报
回复
谢谢!
这段代码用于打印前设定打印机的纸张尺寸,然后按照设定的尺寸打印报表。但在我执行中,设定打印机的纸张后,实际打印的报表仍然没有突破A4的尺寸。
没有解决问题。
ch_builder
2004-07-06
打赏
举报
回复
DEVMODE *pDev;
LPPAGESETUPDLG mylp=new PAGESETUPDLG;
memset((void *)mylp,0,sizeof
(PAGESETUPDLG));
mylp->lStructSize=sizeof(PAGESETUPDLG);
mylp->hwndOwner=this->Handle;
mylp->Flags=PSD_RETURNDEFAULT;
PageSetupDlg( mylp );
if (mylp->hDevMode!=NULL){
pDev=(DEVMODE *)GlobalLock(mylp->hDevMode);
pDev->dmPaperSize =OldPaperSize;
pDev->dmOrientation =OldOrientation;
mylp->rtMargin.left =OldLeft;
mylp->rtMargin.right =OldRight;
mylp->rtMargin.top =OldTop;
mylp->rtMargin.bottom=OldBottom;
GlobalUnlock(mylp->hDevMode);
mylp->Flags=PSD_MARGINS|
PSD_INHUNDREDTHSOFMILLIMETERS;
if(PageSetupDlg(mylp)){
pDev=(DEVMODE *)GlobalLock
(mylp->hDevMode);
OldPaperSize =pDev->dmPaperSize;
if(OldPaperSize>28)OldPaperSize=9;//A4
OldOrientation=pDev->dmOrientation;
OldLeft =mylp->rtMargin.left;
OldRight =mylp->rtMargin.right;
OldTop =mylp->rtMargin.top;
OldBottom =mylp->rtMargin.bottom;
Form2->QuickRep1->Page->Orientation =OldOrientation-1;
Form2->QuickRep1->Page->PaperSize
=OldPaperSize;
Form2->QuickRep1->Page->LeftMargin =OldLeft/100;
Form2->QuickRep1->Page->RightMargin =OldRight/100;
Form2->QuickRep1->Page->TopMargin =OldTop/100;
Form2->QuickRep1->Page->Bottom
Margin=OldBottom/100;
GlobalUnlock(mylp->hDevMode);
}
GlobalFree(mylp->hDevMode);
}
delete mylp;
QRPreview1->PageNumber=1;
Form2->QuickRep1->Prepare();
Form2->QuickRep1->Preview();
用这段代码试试吧
nononono
2004-07-06
打赏
举报
回复
QR的版本是 3.3.0,CB5内带的。
nononono
2004-07-06
打赏
举报
回复
谢谢 ch_builder(春辉)!
那些代码放在Form的OnCreate事件中了,也在预览之前增加了Prepare()(其实没有这句预览也正常),打印机走纸正常,每个送纸器的纸型全部设置成US Std Fanfold。可打印出来的还是A4窄边的宽度。
打印机作业中看到的作业属性里的纸张仍然是A4.
我不明白这个A4从哪里来的?!
ch_builder
2004-07-06
打赏
举报
回复
你上面的这段代码应该没有什么问题,不清楚你用的是QR那个版本?
当然从你的代码来看,我觉得好象放的位置不对,你这个代码应该放在ONCREAT事件中,并且如果是自定义的你应该先用Prepare(),将内容调到内存中来,这样才能正确显示
至于连续打印,这与电脑设置没多少关系,关键是你的打印上设置了,这好象你应该清楚,在LQ机器上有一个连续与单页的转换杆,你试试吧
nononono
2004-07-06
打赏
举报
回复
我将QR控件的属性设置成自定义的340mm宽*280mm长,并有代码如下:
void __fastcall TFORM_Rep_KCZM_A::QuickRep1BeforePrint(
TCustomQuickRep *Sender, bool &PrintReport)
{
QuickRep1->Page->PaperSize = Custom;
QuickRep1->Page->Length = 280;
QuickRep1->Page->Width = 345;
QuickRep1->Page->Orientation = poPortrait;
QuickRep1->Units = MM;
}
我已经把打印机个处设置的纸张都设置为 US Std Fanfold,可报表打印时的打印机作业中看到的作业属性里的纸张仍然是A4.
打印出来的效果怎么都是A4窄边的宽度!
loginwind
2004-07-06
打赏
举报
回复
打印机没设置好!看纸张是否靠最左边,是否设置为叠纸!
nononono
2004-07-06
打赏
举报
回复
补充:必须在打印前用代码设置打印机的属性吗?
计算机打印中
纸张
不出来,菜鸟发货平台打印机不出纸怎么办?打印机
纸张
尺寸如何设置?...
一些商家报告说,他们在菜鸟快递平台上打印时会遇到很多问题,比如一系列的问题,比如从不打印纸。在这里,我们将给你一个统一的指导。如果你对新手传送平台有其他的问题,你可以继续关注这个网站来查看更多的内容。...
如何
使用
报表
工具
制作
二维码
报表
说明:
报表
中有些数据需要用二维码表示,盈帆
报表
中如何生成二维码呢?本课程以产品表为例,让产品的价格以二维码展示。 步骤一:加数据源 在数据源区点击,在数据集获取语句中输入:“select * from购货单信息”...
matlab中
qr
函数
QR
分解
类似的,我们可以
定义
A的QL, RQ和LQ分解。 更一般的说,我们可以因数分解复数m×n矩阵(有着m ≥ n)为 m×n 酉矩阵(在Q∗Q = I的意义上)和n× n上三角矩阵的乘积。 如果A是非奇异的,则这个因数分解为是唯一,当...
QR
码
使用
总结
Quick Response Code)是二维码的一种,相应的ISO国际标准ISO/IEC 18004,现在互联网上的二维码一般都是
QR
码。本文主要总结生成
QR
码(模式2)遇到的几个问题,生成
使用
开源条码库ZXing。
QR
码尺寸问题 问题描述:...
代码:matlab求
QR
分解,QL分解,LQ分解和RQ分解。
Matlab的命令里只有
QR
分解,如何求QL分解和LQ,RQ分解? LQ分解: [Q1,R1]=
qr
(H'); H=(Q1*R1)'=R1' *Q1'=L*Q; 所以下三角阵L=R1',正交阵Q=Q1' QL分解: [Q1,R1]=
qr
( inv(H' ) ); H'=(Q1*R1)-1= R1...
VCL组件使用和开发
604
社区成员
13,460
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章