找回密码
 立即注册

QQ登录

只需一步,快速开始

wugrid
中级会员   /  发表于:2014-7-9 09:15:00
11#
不好意思,不知道如何确定 "e.Graphics.DrawString("接收人:\t\t\t\t\t" + "会计:", fontNr3, Brushes.Black, 100, 480);" 里的 Y值?因为表格打完后的位置无法确定
回复 使用道具 举报
wugrid
中级会员   /  发表于:2014-7-9 09:19:00
12#
以前用过"vsflex8l.ocx"  "vsprint8.ocx",我的问题都能完全解决.一切都可以自动完成.现在的Studio for WinForms 没搞清楚如何完成
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-9 14:05:00
13#
回复 12楼wugrid的帖子

你的问题已经收到。
这是不同的产品,必然存在差异性。
这些问题需要根据实际情况写代码解决,我对你的具体项目参数不是很了解。
我只能尝试替你解决。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
wugrid
中级会员   /  发表于:2014-7-9 14:21:00
14#
不知道如何确定 "e.Graphics.DrawString("接收人:\t\t\t\t\t" + "会计:", fontNr3, Brushes.Black, 100, 480);" 里的 Y值?因为表格打完后的位置无法确定.现在想知道如何定位表格下面一行文字的Y 值?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-9 15:39:00
15#
回复 14楼wugrid的帖子

C1FlexGrid没有属性可以直接获取你说的Y值。若是你注重打印,又要使用C1FlexGrid的,可以尝试自定义C1FlexGrid去打印。
C1FlexGrid的自定义例子在附件:


你也可以打开开始菜单->ComponentOne->Studio for winForms->Samples->FlexgridSample找到这个示例。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
wugrid
中级会员   /  发表于:2014-7-9 16:46:00
16#
虽然没有完全解决问题,但还是要谢谢你!这个例子很早就看过 不是我要的
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-9 19:15:00
17#
回复 16楼wugrid的帖子

问题我们会进一步跟进,明天继续调查。谢谢
回复 使用道具 举报
wugrid
中级会员   /  发表于:2014-7-11 10:52:00
18#
回复 17楼iceman的帖子

一直在等待你的新进展...
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-11 17:36:00
19#
回复 18楼wugrid的帖子

你好,你需要的功能已经实现了。第一行、第二行以及最后一行的打印位置都是需要自己计算的,下面附件的例子里的位置都是按照页面写代码计算的。

使用我在14楼给你的Sample,并调用之前提到的PrintPage事件就可以了。
1.重写PrintDocument,并且暴露一个最后一页的Size的属性。参考代码:
  1. public Size LastPageSize
  2.         {
  3.             get { return (_images[_images.Count-1] as Image).Size; }
  4.         }
复制代码

2.调用PrintPage事件,并且在该事件里DrawString,把你的那些输出字符串画出来,代码参考:
  1. void fpd_PrintPage(object sender, PrintPageEventArgs e)
  2.         {
  3.             StringFormat sfCenter = new StringFormat();
  4.             sfCenter.Alignment = StringAlignment.Center;

  5.             string firstLine = "产品入库报表";
  6.             Font fontNr = new System.Drawing.Font("宋体", 16);
  7.             Size fistLineSize = TextRenderer.MeasureText(firstLine, fontNr);

  8.             string secondLineLeft = "销售单位:";
  9.             Font fontNr2 = new System.Drawing.Font("宋体", 12);
  10.             Size secondLineLeftSize = TextRenderer.MeasureText(secondLineLeft, fontNr2);

  11.             string secondLineRight ="日期:"+string.Format("{0:yyyy年MM月dd日}",DateTime.Today);
  12.             Size secondLineRightSize = TextRenderer.MeasureText(secondLineRight, fontNr2);
  13.            
  14.             int left = e.MarginBounds.Left;
  15.             int right = e.MarginBounds.Left + posSize.Width -  secondLineRightSize.Width;
  16.             int center = e.MarginBounds.Left + posSize.Width / 2;
  17.             int firstTop = e.MarginBounds.Top - fistLineSize.Height - secondLineRightSize.Height;
  18.             int secondTop = e.MarginBounds.Top - secondLineRightSize.Height;

  19.             e.Graphics.DrawString(firstLine, fontNr, Brushes.Black, center, firstTop, sfCenter);                  
  20.             e.Graphics.DrawString(secondLineLeft, fontNr2, Brushes.Black, left, secondTop);
  21.             e.Graphics.DrawString(secondLineRight, fontNr2, Brushes.Black, right, secondTop);

  22.             if (!e.HasMorePages)
  23.             {
  24.                 string lastLineLeft = "接收人:";
  25.                 string LastLineRight = "会计:";
  26.                 int lastTop = e.MarginBounds.Top + posSize.Height;
  27.                      
  28.                 e.Graphics.DrawString(lastLineLeft, fontNr2, Brushes.Black, left, lastTop);
  29.                 e.Graphics.DrawString(LastLineRight, fontNr2, Brushes.Black, right, lastTop);
  30.             }
  31.         }
复制代码

3.根据上述代码,你所需的Y的值就是最后一页打印的数据的高度加页面的Margin高度,即e.MarginBounds.Top + posSize.Height。


最后一页效果:


例子在附件里:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
wugrid
中级会员   /  发表于:2014-7-11 18:39:00
20#
回复 19楼Alice的帖子

功夫不负有心人,终于得到答案.非常感谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部