在vb6 flexgrid中手动输入小计值
我有一个带分组的flexgrid,还有一个按分组的.小计。除一列外,所有列均为数字,非数字列的格式为“x/y”,例如“1/5”,即提供的5项中有1项 如果我用flexSTSum进行.Subtotal,它将对该对中的第一个数字求和,即在上面的示例中,它将把1求和为十进制,并在小计行中显示1.00 起初,我试图找到一种在另一列上求和的方法,也就是说,我可以将各个值放在单独的列中,给它们一个.Width为0,然后将它们求和到第一列的.Subtotal列中,但我找不到这样做的方法 即使我找到了这样做的方法,我也希望能够自定义.Subtotal的格式,因此它在小计行中显示为“3/17”,即“1/5”和“2/12”小计到“3/17” 如果我无法对另一列进行小计,我想知道是否可以自定义访问小计行并手动输入小计值“3/17”,但即使这样也似乎不可用在vb6 flexgrid中手动输入小计值,vb6,Vb6,我有一个带分组的flexgrid,还有一个按分组的.小计。除一列外,所有列均为数字,非数字列的格式为“x/y”,例如“1/5”,即提供的5项中有1项 如果我用flexSTSum进行.Subtotal,它将对该对中的第一个数字求和,即在上面的示例中,它将把1求和为十进制,并在小计行中显示1.00 起初,我试图找到一种在另一列上求和的方法,也就是说,我可以将各个值放在单独的列中,给它们一个.Width为0,然后将它们求和到第一列的.Subtotal列中,但我找不到这样做的方法 即使我找到了这样做的方
我的问题是,有没有办法做到这一点?我假设您使用的是我从未使用过的VideoSoft FlexGrid,因此我无法帮助您了解该控件的具体方法 不过,您可以使用标准的MSFlexGrid控件轻松地执行此操作,而使用VideoSoft FlexGrid也可以轻松地执行此操作 请查看以下示例项目:
'1 form with :
' 1 msflexgrid control : name=MSFlexGrid1
Option Explicit
Private Sub Form_Load()
Dim lngRow As Long, lngCol As Long
With MSFlexGrid1
.Rows = 10
.Cols = 4
.FixedRows = 0
.FixedCols = 0
For lngRow = 0 To .Rows - 2
For lngCol = 0 To .Cols - 2
.TextMatrix(lngRow, lngCol) = CStr(100 * lngRow + lngCol)
Next lngCol
.TextMatrix(lngRow, .Cols - 1) = CStr(lngRow) & "/" & CStr(lngRow * lngRow)
Next lngRow
End With 'MSFlexGrid1
End Sub
Private Sub Form_Resize()
MSFlexGrid1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub MSFlexGrid1_Click()
Dim lngCol As Long
'calculate subtotals
With MSFlexGrid1
For lngCol = 0 To .Cols - 2
.TextMatrix(.Rows - 1, lngCol) = CStr(GetTotal(lngCol))
Next lngCol
.TextMatrix(.Rows - 1, .Cols - 1) = GetTotalSpecial(.Cols - 1)
End With 'MSFlexGrid1
End Sub
Private Function GetTotal(lngCol As Long) As Long
Dim lngRow As Long
Dim lngTotal As Long
With MSFlexGrid1
lngTotal = 0
For lngRow = 0 To .Rows - 2
lngTotal = lngTotal + Val(.TextMatrix(lngRow, lngCol))
Next lngRow
End With 'MSFlexGrid1
GetTotal = lngTotal
End Function
Private Function GetTotalSpecial(lngCol As Long) As String
Dim lngRow As Long
Dim lngTotal1 As Long, lngTotal2 As Long
Dim strPart() As String
With MSFlexGrid1
lngTotal1 = 0
lngTotal2 = 0
For lngRow = 0 To .Rows - 2
strPart = Split(.TextMatrix(lngRow, .Cols - 1), "/")
If UBound(strPart) = 1 Then
lngTotal1 = lngTotal1 + Val(strPart(0))
lngTotal2 = lngTotal2 + Val(strPart(1))
End If
Next lngRow
End With 'MSFlexGrid1
GetTotalSpecial = CStr(lngTotal1) & "/" & CStr(lngTotal2)
End Function
它将加载带有一些值的网格,当您单击网格时,小计将被计算并填入最后一行