Foxtable(狐表)用户栏目专家坐堂 → 固定合计行 列不对齐的问题(已解决)


  共有2833人关注过本帖树形打印复制链接

主题:固定合计行 列不对齐的问题(已解决)

帅哥哟,离线,有人找我吗?
km007
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:5156 威望:0 精华:0 注册:2016/1/28 2:59:00
固定合计行 列不对齐的问题(已解决)  发帖心情 Post By:2021/9/15 19:35:00 [只看该作者]

如下图,当 横向滚动条 拉到 最后边 时,固定合计行 会出现不对齐列 的情况


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210915193059.png
图片点击可在新窗口打开查看


代码如下:
'------------------------------------------------------------------------------------------------------------------
Dim sender As object = Args(0)
Dim ea As object = Args(1)
If sender.Name = "" Then Return Nothing  '没有设置好Table 和底层的关联
If Tables.Contains(sender.Name) = False Then Return Nothing  '不存在就退出
Dim tb As Table = Tables(sender.Name)
If tb.GrandTotal  Then    '如果处于合计模式
    Dim hg As Integer = sender.rows(sender.rows.count -1).Height  '控件高
    If hg = -1 Then
        hg = sender.rows(sender.rows.count -1).HeightDisplay
    End If
    Dim gh = sender.Height - 1
    Select Case sender.ScrollBarsVisible '显示了滚动条  0无 1横向 2纵向 3横纵
        Case 1,3
            gh = gh - 19
    End Select
    'Dim gh = sender.ScrollableRectangle.height + 20
    If sender.Controls.ContainsKey("Myhuizong") = False Then  '不存在汇总控件,则添加
        Dim huizong As new C1.Win.C1FlexGrid.C1FlexGrid
        With huizong
            .name = "Myhuizong"
            .BorderStyle = C1.Win.C1FlexGrid.Util.BaseControls.BorderStyleEnum.None '无边框
            .Cols.Count = sender.Cols.Count
            .rows.count = 2
            .Rows(0).Height = 0    '隐藏标题行
            .Enabled = False    '不能使用控件
            .styles.emptyarea.backcolor = sender.styles.emptyarea.backcolor
            '.FocusRect = C1.Win.C1FlexGrid.FocusRectEnum.None '不显示焦点框
            .HighLight = C1.Win.C1FlexGrid.HighLightEnum.Never '不高亮显示选定区
        End With
        sender.Controls.add(huizong)   '加入控件
    End If
    Dim k As Integer = 2
    Dim hui As C1.Win.C1FlexGrid.C1FlexGrid = sender.Controls("Myhuizong")
    Select Case sender.ScrollBarsVisible '显示了滚动条  0无 1横向 2纵向 3横纵
        Case 0,2
            hui.ScrollBars = 2
        Case Else
            hui.ScrollBars = 0
    End Select
    With hui         '调整位置
        .left = 0
        If sender.Rows(sender.Rows.count -1).Top < sender.Height - sender.rows(sender.rows.count -1).Height * 2 Then
            .Top = sender.GetCellRect(sender.Rows.count-1, 1).y
        Else
            .top = gh - hg - 1
        End If
        '.width = sender.width -19
        .width = sender.width
        .Height = hg + 2
        .Rows(1).Height = hg
    End With
    Dim sLightBlue As C1.Win.C1FlexGrid.CellStyle = hui.Styles.Add("LightBlue")
    sLightBlue.BackColor = Drawing.Color.PaleGreen '合计行背景色
    'sLightBlue.ForeColor = Color.black '合计字体颜色
    Dim i As Integer
    Dim flag As Integer = -1
    For i = 0 To  sender.Cols.count -1
        If sender.Cols(i).width = -1 Then    '同步列宽
            hui.Cols(i).width = sender.Cols.DefaultSize
        Else
            hui.Cols(i).width = sender.Cols(i).width
        End If
        If i > 0 Then hui.SetCellStyle(1,i,sLightBlue)
        hui.Cols(i).Visible = sender.Cols(i).Visible   '同步隐藏列
        If sender.Cols(i).Visible AndAlso flag < 0 AndAlso i > 0 Then
            hui(1,i) = "合计"
            flag = i
        ElseIf i > 0
            hui.Cols(i).Style = sender.Cols(i).Style    '同步列样式
        End If
        If i > flag Then
            If tb.Cols(i-1).GrandTotal Then
                hui(1,i) = sender.Aggregate(C1.Win.C1FlexGrid.AggregateEnum.Sum,0,i,sender.Rows.count-2,i,1)
            Else
                hui(1,i) = Nothing
            End If
        End If
    Next
    hui.Cols.Frozen = sender.Cols.Frozen   '同步冻结列
    hui.ScrollPosition = sender.ScrollPosition   '同步水平滚动
    hui.ExtendLastCol = sender.ExtendLastCol '同步最后一列 列宽
Else   '检查并删除控件
    If sender.Controls.ContainsKey("Myhuizong")  Then  '删除控件
        sender.Controls.RemoveByKey("Myhuizong")
    End If
End If
[此贴子已经被作者于2021/9/18 15:59:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
km007
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:5156 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2021/9/16 13:55:00 [只看该作者]

求助

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105947 积分:538804 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/16 14:02:00 [只看该作者]

请上传实例说明

 回到顶部
帅哥哟,离线,有人找我吗?
km007
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:5156 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2021/9/16 18:16:00 [只看该作者]

该实例横向滚动条 向右拉到尽头,固定合计行的竖向网格线 跟 数据表的竖向网格线 不对齐,这个实例中 偏移不大,但也是有偏移的情况

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义固定合计行.table


 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105947 积分:538804 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/16 20:20:00 [只看该作者]

看不出效果。请上传差别比较大的例子

 回到顶部
帅哥哟,离线,有人找我吗?
km007
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:5156 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2021/9/17 0:19:00 [只看该作者]

以下截图为本楼 附件实例 截图

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210917001835.png
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb
[此贴子已经被作者于2021/9/17 0:20:37编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105947 积分:538804 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/17 8:52:00 [只看该作者]

    With hui         '调整位置
        .left = 0
        If sender.Rows(sender.Rows.count -1).Top < sender.Height - sender.rows(sender.rows.count -1).Height * 2 Then
            .Top = sender.GetCellRect(sender.Rows.count-1, 1).y
        Else
            .top = gh - hg - 1
        End If
        .width = sender.ScrollableRectangle.width + sender.Cols(0).width
        .Height = hg + 2
        .Rows(1).Height = hg
    End With

 回到顶部
帅哥哟,离线,有人找我吗?
km007
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:5156 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2021/9/17 13:19:00 [只看该作者]

OK,解决,谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
km007
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:5156 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2021/9/18 13:17:00 [只看该作者]

新的问题:存在冻结列时,固定合计行后面就出现缺少了 列数(冻结了多少列,就少了多少列)

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb

[此贴子已经被作者于2021/9/18 13:18:56编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105947 积分:538804 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/18 14:06:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (2).zip


 回到顶部
总数 16 1 2 下一页