以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 固定合计行 列不对齐的问题(已解决) (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=171956) |
||||
-- 作者:km007 -- 发布时间: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 -- 发布时间:2021/9/16 13:55:00 -- 求助 |
||||
-- 作者:有点蓝 -- 发布时间:2021/9/16 14:02:00 -- 请上传实例说明 |
||||
-- 作者:km007 -- 发布时间:2021/9/16 18:16:00 -- 该实例横向滚动条 向右拉到尽头,固定合计行的竖向网格线 跟 数据表的竖向网格线 不对齐,这个实例中 偏移不大,但也是有偏移的情况
|
||||
-- 作者:有点蓝 -- 发布时间:2021/9/16 20:20:00 -- 看不出效果。请上传差别比较大的例子 |
||||
-- 作者:km007 -- 发布时间:2021/9/17 0:19:00 -- 以下截图为本楼 附件实例 截图 此主题相关图片如下:qq图片20210917001835.png
[此贴子已经被作者于2021/9/17 0:20:37编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2021/9/17 13:19:00 -- OK,解决,谢谢 |
||||
-- 作者:km007 -- 发布时间:2021/9/18 13:17:00 -- 新的问题:存在冻结列时,固定合计行后面就出现缺少了 列数(冻结了多少列,就少了多少列)
[此贴子已经被作者于2021/9/18 13:18:56编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2021/9/18 14:06:00 --
|