以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于固定合计行(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78561) |
||||
-- 作者:cyl123 -- 发布时间:2015/12/11 16:02:00 -- 关于固定合计行(已解决) 关于固定合计行, C1.Win.C1FlexGrid.CellStyle选择范围背景颜色如何设置?再求C1.Win.C1FlexGrid属性事件教程 [此贴子已经被作者于2015/12/11 17:06:58编辑过]
|
||||
-- 作者:大红袍 -- 发布时间:2015/12/11 17:54:00 --
|
||||
-- 作者:hanxuntx -- 发布时间:2016/1/10 11:17:00 -- 顶大红袍 好帖 |
||||
-- 作者:建筑人生 -- 发布时间:2016/6/25 16:18:00 -- 合计行固定在哪里设置,我没找到
|
||||
-- 作者:Hyphen -- 发布时间:2016/6/25 16:53:00 -- 打开2楼的项目,菜单:杂项-》输出代码,看懂里面的代码 |
||||
-- 作者:kaituozhe -- 发布时间:2016/6/26 16:12:00 -- 怎么也能让窗口中的表也用同样的方法实现固定合计行,需要怎么修改代码? |
||||
-- 作者:大红袍 -- 发布时间:2016/6/26 16:14:00 -- 一样啊,看2楼啊。 |
||||
-- 作者:riwwdgv -- 发布时间:2017/3/16 23:31:00 -- 我也是碰到这样的问题,把大红袍的(合计行固定.table)文件下载之后,以为只要在
表事件AfterLoadTableSetting 加入下面的代码就可以行了,结果试了半天都不行。
e.Table.Grid.Name = e.Table.Name \'将底层和现有的table 用Name关联起来
然后看见5楼说输出代码,看懂里面的就可以,果然有收获,下面我自己的操作方法补充进来,让更多像我这样的小白更快学会这个操作, 我不懂接下来的操作有什么关联,反正我是用下面的步骤设置成功的(花了三个小时慢慢看输出代码,对比<合计行固定.table>里面的N多地方,看有没有不同)
首先要在全局代码器里面<Default>添加下面的代码 Public Sub Grid_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs)
然后在 项目属性-项目事件-AfterOpenProject 添加下面的代码
AddHandler Tables("订单").grid.Paint, AddressOf Grid_Paint
接着再到内部函数添加函数,函数名称为:MyGrid_Paint
函数代码下面的 这样就OK了,可以实现固定合计行了。
Dim sender As object = Args(0) Dim e 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 \'如果处于合计模式 If sender.Rows(sender.Rows.count -1).Top < sender.Height - sender.rows(sender.rows.count -1).Height * 2 Then \'如果原合计行可视 If sender.Controls.ContainsKey("Myhuizong") Then \'删除合计行控件 sender.Controls.RemoveByKey("Myhuizong") End If Else 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 If sender.ScrollBarsVisible = 1 OrElse sender.ScrollBarsVisible = 3 Then \'显示了水平滚动条 gh = gh - 19 End If 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 \'不能使用控件 End With sender.Controls.add(huizong) \'加入控件 End If Dim hui As C1.Win.C1FlexGrid.C1FlexGrid = sender.Controls("Myhuizong") If sender.ScrollBarsVisible = 0 OrElse sender.ScrollBarsVisible = 2 Then \'显示了垂直滚动条 hui.ScrollBars = 2 Else hui.ScrollBars = 0 End If With hui \'调整位置 .left = 0 .Top = gh - hg - 1 .width = sender.width -19 .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 Dim i As Integer 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 hui.Cols(i).Style = sender.Cols(i).Style \'同步列样式 If i > 0 Then hui.SetCellStyle(1,i,sLightBlue) hui.Cols(i).Visible = sender.Cols(i).Visible \'同步隐藏列 Next hui.Cols.Frozen = sender.Cols.Frozen \'同步冻结列 hui.ScrollPosition = sender.ScrollPosition \'同步水平滚动 hui(1,1) = "合计" For i = 2 To sender.Cols.count -1 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 Next End If Else \'检查并删除控件 If sender.Controls.ContainsKey("Myhuizong") Then \'删除控件 sender.Controls.RemoveByKey("Myhuizong") End If End If
|
||||
-- 作者:浪痕 -- 发布时间:2020/7/24 16:35:00 -- 按照教程我实现了固定合计栏,现在同样的问题,不会套用到窗口固定合计栏,有哪位师傅可以再详细指导下,需要注意变换那些代码,菜鸟的无奈,谢谢! |