zoukankan      html  css  js  c++  java
  • richview表格夸页的修改(源码)

    主要是修改SclRVIew单元的CalculatePageCount函数
    增加变量

    vPageStartTableItemOffs: array of Integer; 存放夸页时,上一页已经绘制掉的东西

     vHasDrawOffs: Integer;    //表格跨页时,前页剩余的高度
     vCanOffsLines: Integer;   //剩余高度能显示多少行内容

    procedure calculateTablePageCount(NumberingNote : Boolean);

            if not isRowSpan then
            begin
              GetRowHeight(StartRow, CRowTop, vRowHeight);
              //+ 如果当前行都大于页面 看看减去上一页画掉的部分后还大不大
              if (vRowHeight> pHeight) and (Result > 0) then
                vRowHeight:= vRowHeight- vPageStartTableItemOffs[Result - 1];
              //+

    。。。。。。
                if isFirstItem then
                begin
                  //+ 如果当前页连当前行都放不下,下一页还要从当前行的内容显示起
                  if vRowHeight > pHeight then
                    NextRow := StartRow;
                  //+
                  PageEndTableItem[Result] := srvCurItem.ItemNo;
                  PageEndTableRow[Result] := StartRow;
                  PageStartTableRow[Result + 1] := NextRow;
                  if (NextRow > -1) then
                    PageStartTableItem[Result + 1] := srvCurItem.ItemNo;
                end
    。。。。。
                if isFirstItem then
                begin
                  if StartRow = PageStartTableRow[Result] then
                  begin
                    vBottomOfPage := srvCurItem.MinTop +
                      Math.min(CRowTop - srvCurItem.MinTop + vRowHeight, pHeight);
                    //+
                    if vRowHeight > pHeight then
                    begin
                      vHasDrawOffs := srvCurItem.MinTop + pHeight - vBottomOfPage; //距底部剩余的空间
                      vCanOffsLines := vHasDrawOffs div 16;                        //剩余空间能放下几行
                      if vCanOffsLines > 0 then
                      begin
                        vHasDrawOffs := vCanOffsLines * 16;
                        vBottomOfPage := vBottomOfPage + vHasDrawOffs;
                      end;
                      vPageStartTableItemOffs[Result] := vBottomOfPage - srvCurItem.MinTop + vPageStartTableItemOffs[Result - 1];
                    end;
                    //+
                  end
    。。。。。。
                else
                begin
                  GetRowHeight(PriorRow, CRowTop, vRowHeight); //如果从第三行换到下一页,重新取第二行的相关信息做本页使用
                  vBottomOfPage := srvCurItem.MinTop +
                    Math.min(vCRowTop + vRowHeight - srvCurItem.MinTop, pHeight);
                  //+
                  vHasDrawOffs := srvCurItem.MinTop + pHeight - vBottomOfPage; //距底部剩余的空间
                  vCanOffsLines := vHasDrawOffs div 16;                        //剩余空间能放下几行
                  if vCanOffsLines > 0 then
                  begin
                    vHasDrawOffs := vCanOffsLines * 16;
                    vBottomOfPage := vBottomOfPage + vHasDrawOffs;
                    vPageStartTableItemOffs[Result] := vHasDrawOffs;
                  end;
                  //+
                end;


      //+
      SetLength(vPageStartTableItemOffs, 100);
      for vHdId := Low(vPageStartTableItemOffs) to High(vPageStartTableItemOffs) do
        vPageStartTableItemOffs[vHdId] := 0;
      vPageStartTableItemOffs[0] := 0;
      //+
      while (srvCurItem.DrawItemNo <= viDrawLinesCount) do  //循环 每一个line计算高度并计算页数
      begin
        isCanNextDrawItem := TRUE;
    。。。。。。。
        if isFirstItem and (PageStartTableItem[Result] > -1) and //第一个item是上页跨过来的表格
          (PageStartTableRow[Result] > 0) then
        begin
          srvCurItem.Top := srvCurItem.Top + vTableItem.Cells[PageStartTableRow[Result], 0].Top;

          //+加上已经在上一页夸页处理时绘制掉的部分做为新的起始位置
          srvCurItem.Top := srvCurItem.Top + vPageStartTableItemOffs[Result - 1];
          //+

  • 相关阅读:
    Python: 通过 pip 安装第三方包后依然不能 import
    jar命令
    vim中删除^M
    Linux 非互联网环境安装依赖包
    安装rpm包时提示错误:依赖检测失败的解决方法
    python3.5安装
    yum配置安装 及报错
    统计数组元素出现的次数
    插入法排序
    选择法排序
  • 原文地址:https://www.cnblogs.com/coloregg/p/3063072.html
Copyright © 2011-2022 走看看