Foxtable(狐表)用户栏目专家坐堂 → 转置后的临时表怎么用


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

主题:转置后的临时表怎么用

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/23 9:01:00 [只看该作者]

参考代码

 

Dim ls1 As new List(Of String)
Dim dt As Table = Tables("表A")
For Each dc As Col In dt.Cols
    If dc.Caption.StartsWith("p") Then
        ls1.add(dt.name)
    End If
Next
Dim ary1(ls1.count-1) As Double
Dim ary2 = ls1.ToArray
For i As Integer = 0 To ary2.length-1
    ary1(i) = dt.Compute("sum(" & ary2(i) & ")")
Next
array.sort(ary1, ary2)
For i As Integer = ary2.length-1 To 0 Step -1
    msgbox(ary2(i))
Next


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/11/28 2:06:00 [只看该作者]

甜老师帮我看看问题?

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20181128020238.png
图片点击可在新窗口打开查看
代码:
Static rPoints As System.Drawing.Point()
Static cPoints As System.Drawing.Point()
If e.Row.Index = 0 AndAlso e.Col.Index = 0 Then
    Dim RowsCount As Integer = e.Table.Rows.Count
    Dim ColsCount As Integer = e.Table.Cols.Count
    
    Dim rps As System.Drawing.Point() = New System.Drawing.Point() {}
    Dim cps As System.Drawing.Point() = New System.Drawing.Point() {}
    Array.Resize(rps, RowsCount)
    Array.Resize(cps, ColsCount)
    
    For i As Integer = 0 To RowsCount - 1
        For j As Integer = 0 To ColsCount - 1
            Dim rp As System.Drawing.Point = rps(i)
            If rp = Nothing Then
                rp = New System.Drawing.Point(0, 0)
            End If
            rp.X = rp.X + val(e.Table.Rows(i)(j))
            rps(i) = rp
            If i > 0 Then
                rps(i-1).Y = rp.X
            End If
            
            Dim cp As System.Drawing.Point = cps(j)
            If cp = Nothing Then
                cp = New System.Drawing.Point(0, 0)
            End If
            cp.X = cp.X + val(e.Table.Rows(i)(j))
            cps(j) = cp
            If j > 0 Then
                cps(j-1).Y = cp.X
            End If
        Next
    Next
    
    rPoints = rps
    cPoints = cps
End If

Dim x As Integer = rPoints(e.Row.Index).X
Dim x1 As Integer = rPoints(e.Row.Index).Y
If x = e.Col.Index  Then
    Dim points(1) As Point
    points(0) = New Point(e.X+e.Width, e.Y)
    points(1) = New Point(e.X+e.Width, e.Y+e.Height)
    e.Graphics.DrawLines(Pens.Green, points)
End If
If x > x1 AndAlso e.Col.Index > x1 AndAlso e.Col.Index <= x Then
    Dim points(1) As Point
    points(0) = New Point(e.X, e.Y+e.Height)
    points(1) = New Point(e.X+e.Width, e.Y+e.Height)
    e.Graphics.DrawLines(Pens.Green, points)
ElseIf x < x1 AndAlso e.Col.Index > x AndAlso e.Col.Index <= x1 Then
    Dim points(1) As Point
    points(0) = New Point(e.X, e.Y+e.Height)
    points(1) = New Point(e.X+e.Width, e.Y+e.Height)
    e.Graphics.DrawLines(Pens.Green, points)
End If

Dim y As Integer = cPoints(e.Col.Index).X
Dim y1 As Integer = cPoints(e.Col.Index).Y
If y = e.Row.Index + 1 Then
    Dim points(1) As Point
    points(0) = New Point(e.X, e.Y+e.Height)
    points(1) = New Point(e.X+e.Width, e.Y+e.Height)
    e.Graphics.DrawLines(Pens.Red, points)
End If
If y < y1 AndAlso e.Row.Index >= y AndAlso e.Row.Index < y1 Then
    Dim points(1) As Point
    points(0) = New Point(e.X+e.Width, e.Y)
    points(1) = New Point(e.X+e.Width, e.Y+e.Height)
    e.Graphics.DrawLines(Pens.Red, points)
End If
If y > y1 AndAlso e.Row.Index < y AndAlso e.Row.Index >= y1 Then
    Dim points(1) As Point
    points(0) = New Point(e.X+e.Width, e.Y)
    points(1) = New Point(e.X+e.Width, e.Y+e.Height)
    e.Graphics.DrawLines(Pens.Red, points)
End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/28 10:10:00 [只看该作者]

回复楼上,是每次都生成?还是一开始才生成?

 

如果只是生成一次,你可以刷新表,比如做一个按钮,如 Tables("表A").Refresh

 

如果每次都生成,实例发上来测试。


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/11/28 10:55:00 [只看该作者]

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


帮助优化一下

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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/11/28 11:04:00 [只看该作者]

行列排序在窗口中的窗口1

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/28 11:30:00 [只看该作者]

看不懂你的代码,比如s线,这样写,自己看懂代码改写。

 

e.StartDraw()
If e.Row.Index <= e.Table.Rows.count - 2 Then
    Dim hj As Double = e.Row("合计")
    If e.Col.Index = hj Then
        e.Graphics.DrawLine(Pens.Red, e.x+e.width, e.y, e.x+e.width, e.y+e.height)
    End If
    If e.Row.Index >= 0 AndAlso e.Row.Index < e.Table.Rows.count-2 Then
        Dim pr As Row = e.Table.Rows(e.Row.Index+1)
        If e.Col.Index > pr("合计") AndAlso e.Col.Index <= hj Then
            e.Graphics.DrawLine(Pens.Red, e.x, e.y+e.height, e.x+e.width, e.y+e.height)
        End If
    End If
End If
e.EndDraw()


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/11/28 12:31:00 [只看该作者]

怎么才能做到鼠标移动时,线不闪烁或消失

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/28 12:38:00 [只看该作者]

mouseenter、mouseleave事件,写代码

 

e.table.refresh


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6175 威望:0 精华:0 注册:2015/7/25 19:14:00
  发帖心情 Post By:2018/11/29 16:33:00 [只看该作者]

甜老师:两个问题
1.p线和s线重合部分用其他色加粗,怎么做?
2.s线和p线围的面积(数据记录数)怎么算?
请给个思路

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/29 17:21:00 [只看该作者]

1、你s线和p线,不要画在同一个地方即可,比如s画在底部,p线画在底部上面一点;

 

2、不明白你的计算逻辑,请具体说明。然后计算后的结果,要显示到哪里去。


 回到顶部