找回密码
 立即注册

QQ登录

只需一步,快速开始

taoke

高级会员

28

主题

58

帖子

1762

积分

高级会员

积分
1762

活字格认证

taoke
高级会员   /  发表于:2014-6-6 15:15  /   查看:8985  /  回复:11
不足一页要补满一页如何实现
如圖

ComponentOne C1PrintDocument

本帖子中包含更多资源

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

x

11 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-6-6 20:57:00
沙发
回复 1楼taoke的帖子

需要通过计算行高和剩余页面高度来实现,我这边正在尝试实现。
回复 使用道具 举报
taoke
高级会员   /  发表于:2014-6-8 20:57:00
板凳
回复 2楼iceman的帖子

能否告知一下怎么得到行高和剩余页面高度,谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-6-9 16:00:00
地板
回复 3楼taoke的帖子

抱歉让你久等了。
获取代码如下:


  1.             //创建表格
  2.             RenderTable rt1 = new RenderTable();

  3.             //获取表格高度
  4.             Unit tableHeight = rt1.Height;

  5.             //获取表格位置
  6.             Unit tableY = rt1.Y;

  7.             //获取页面高度
  8.             Unit PageHeight = this.c1PrintDocument1.PageLayout.PageSettings.Height;

  9.             //获取或设置行高度
  10.             Unit row = rt1.Rows[0].Height;

  11.             this.c1PrintDocument1.Body.Children.Add(rt1);

  12.             this.c1PreviewPane1.Document = this.c1PrintDocument1;
复制代码
回复 使用道具 举报
taoke
高级会员   /  发表于:2014-6-9 16:26:00
5#
回复 4楼iceman的帖子

//获取表格位置
Unit tableY = rt1.Y;
得到的值是auto 沒有法得到一個double值
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-6-9 18:35:00
6#
回复 5楼taoke的帖子

可以通过以代码设置为固定值:
rt1.RowSizingMode = TableSizingModeEnum.Fixed;

我可以尝试实现个 Demo 给你查看,制作完成后上传到论坛。
回复 使用道具 举报
taoke
高级会员   /  发表于:2014-6-10 09:32:00
7#
回复 6楼iceman的帖子

大神,我設置了好像沒有用還是得到auto,希望你做一個 [不足一页要补满一页如何实现]的demo,十分感謝
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-6-10 18:42:00
8#
回复 7楼taoke的帖子

好的,我尝试制作 Demo 上传。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-6-12 12:12:00
9#
回复 7楼taoke的帖子

当前调查进度:

  1.         private void InitReport()
  2.         {
  3.             this.c1PrintDocument1.DefaultUnit = UnitTypeEnum.Pixel;
  4.             this.c1PrintDocument1.PageLayout.PageSettings.Height = new Unit(2000, UnitTypeEnum.Pixel);

  5.             RenderParagraph codeLine = new RenderParagraph();
  6.             ParagraphText p1 = new ParagraphText("MessageBox");
  7.             codeLine.Content.Add(p1);
  8.             codeLine.X = new Unit(0, UnitTypeEnum.Pixel);
  9.             codeLine.Y = new Unit(10, UnitTypeEnum.Pixel);
  10.             codeLine.Height = new Unit(100, UnitTypeEnum.Pixel);
  11.             c1PrintDocument1.Body.Children.Add(codeLine);

  12.             #region table

  13.             int n;
  14.             // make a table
  15.             rt1 = new RenderTable();
  16.             rt1.Rows.Count = 10;
  17.             rt1.Cols.Count = 6;
  18.             rt1.RowSizingMode = TableSizingModeEnum.Fixed;
  19.             rt1.Style.GridLines.All = LineDef.Default;

  20.             for (int i = 0; i < 10; i++)
  21.             {
  22.                 for (int j = 0; j < 6; j++)
  23.                 {
  24.                     rt1.Cells[i, j].Text = "行" + i.ToString() + "列" + j.ToString();
  25.                 }
  26.             }

  27.             rt1.X = new Unit(0, UnitTypeEnum.Pixel);
  28.             rt1.Y = new Unit(111, UnitTypeEnum.Pixel);
  29.             rt1.Height = new Unit(1000, UnitTypeEnum.Pixel);
  30.             #endregion

  31.             //添加表格
  32.             this.c1PrintDocument1.Body.Children.Add(rt1);
  33.         }
复制代码


需要预置好 Page、Table和文本等高度,才可以获取。

  1.             double totalHeight = 0;
  2.             foreach (RenderObject item in this.c1PrintDocument1.Body.Children)
  3.             {
  4.                 totalHeight += item.Height.Value;
  5.             }
复制代码


目前我还没能成功添加 Table 行,先把进度共享给你。
回复 使用道具 举报
taoke
高级会员   /  发表于:2014-6-13 10:34:00
10#
我現在要實現的就是要算出剩余页面高度,然後給Table後補上空行填滿頁
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部