Foxtable(狐表)用户栏目专家坐堂 → 关于固定合计行(已解决)


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

主题:关于固定合计行(已解决)

美女呀,离线,留言给我吧!
cyl123
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:758 积分:6382 威望:0 精华:0 注册:2014/12/21 21:01:00
关于固定合计行(已解决)  发帖心情 Post By:2015/12/11 16:02:00 [只看该作者]

关于固定合计行
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20151211160247.png
图片点击可在新窗口打开查看
显示蓝色,应该是选择范围背景颜色是蓝色,

C1.Win.C1FlexGrid.CellStyle选择范围背景颜色如何设置?再求C1.Win.C1FlexGrid属性事件教程

[此贴子已经被作者于2015/12/11 17:06:58编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/11 17:54:00 [只看该作者]

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

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


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2016/1/10 11:17:00 [只看该作者]

顶大红袍 好帖

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


加好友 发短信
等级:小狐 帖子:342 积分:3451 威望:0 精华:0 注册:2014/8/20 20:14:00
  发帖心情 Post By:2016/6/25 16:18:00 [只看该作者]

合计行固定在哪里设置,我没找到

 


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/6/25 16:53:00 [只看该作者]

打开2楼的项目,菜单:杂项-》输出代码,看懂里面的代码

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15329 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2016/6/26 16:12:00 [只看该作者]

怎么也能让窗口中的表也用同样的方法实现固定合计行,需要怎么修改代码?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/26 16:14:00 [只看该作者]

 一样啊,看2楼啊。

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


加好友 发短信
等级:婴狐 帖子:10 积分:145 威望:0 精华:0 注册:2017/2/21 13:05:00
  发帖心情 Post By: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)
    Functions.Execute("MyGrid_Paint",sender,e)
End Sub

 

然后在 项目属性-项目事件-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

 


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


加好友 发短信
等级:婴狐 帖子:4 积分:474 威望:0 精华:0 注册:2020/4/22 13:01:00
  发帖心情 Post By:2020/7/24 16:35:00 [只看该作者]

按照教程我实现了固定合计栏,现在同样的问题,不会套用到窗口固定合计栏,有哪位师傅可以再详细指导下,需要注意变换那些代码,菜鸟的无奈,谢谢!

 回到顶部