这个问题困扰了我半年之久,一直没到得到满意的答案我要在MSHFlexGrid这后一行实行统计
效果如下:
效果如下:
解决方案 »
- VS2005下用VB有什么方法可以把Textbox中的繁简字体互换?
- 急~急~急!!!sql数据库还原完成后,提示数据库正在装载!在线等~~~
- 向高手求援呀!!! (不好意思,只剩下10分了)
- 怎样在文本框中插入字符?
- dll文件问题!急啊!!!!!!
- 一个弱智问题,知道什么是VB就能得分啊!
- 有VB for windows ce吗?再现等待英雄。。。。。。
- vb如何实现接收和发送组播?
- 急事!!!!!!!!!!!!!!!!!!!!!!!!!!!!!找人做软件!有银子的哦!
- 分给完了走人
- VB程序,,为什么一运行就没响应了,,要怎么改,,求助各位大神。
- 自定义控件中引用parent句柄出错怎么办?
用个PICTREBOX自己画
300分俺再也不相信了
但是全屏显示的时候,不能控件显示最后一行
Dim h As IntegerPrivate Sub Form_Load()
With MSHFlexGrid1
.Rows = 14: .Cols = 8
.Move 0, 0
Dim i As Integer, j As Integer, he As String, r As Integer, N As Integer
.FixedCols = 1: .FixedRows = 1
he = "|^xxx1|^xxx2|^xxx3|^xxx4|^xxx5|^xxx6|^xxx7|^xxx8"
.FormatString = he
.RowHeight(-1) = 400: .ColWidth(-1) = 800: .ColWidth(0) = 200
.Height = .RowHeight(1) * 5 + 290 + 20
.Width = .ColWidth(1) * (.Cols - 2) + 490
For i = 1 To .Rows - 2
For j = 1 To .Cols - 1
If j = 1 Then
.TextMatrix(i, j) = "name" & i
Else
.TextMatrix(i, j) = i + j
End If
Next
Next
.Row = i: .Col = 1: .Text = "合计"
For j = 1 To .Cols - 1
If j > 1 Then
For r = 1 To .Rows - 2
N = N + .TextMatrix(r, j)
Next
.TextMatrix(r, j) = N
End If
.Col = j: .CellAlignment = 4
.CellBackColor = &H80FFFF:
Next
.RowPosition(i) = (.Height - 290) \ .RowHeight(1) - 1
h = (.Height - 290) \ .RowHeight(1) - 1
End With
End SubPrivate Sub MSHFlexGrid1_Scroll()
With MSHFlexGrid1
.RowPosition(h) = .TopRow + 3
h = .TopRow + 3
End WithEnd Sub
不过是一个grid
取数据的时候增加一行作为合计,然后底色变黄
楼主看能对付你的需求吗
发到我邮箱
[email protected]
With Me.fg
.Rows = .Rows + 1
Dim r&, c&, tot!
For c = 1 To .Cols - 1
tot = 0
For r = 1 To .Rows - 2
tot = tot + Val(.TextMatrix(r, c))
Next
.TextMatrix(r, c) = tot
Next
.TextMatrix(.Rows - 1, 0) = "合 计"
.FixedAlignment(i) = 4
End With直接在数据的后一行加合计
回去改改就可以了
不美观的话可以用text自己排,要打印的话可以换用报表。随便看看网上的项目是怎么做的。这类的应用很多~
我们的报表都是这样做的,哈哈
谈何学东西,更不懂cubex了
Option Explicit
Dim aa As Boolean
Dim BottomFixRow As Integer
Dim iRow As Integer '显示行数Private Sub Form_Load()
Dim i As Integer, j As Integer iRow = 18
With fg
.Rows = 50
.Cols = 20
For i = 0 To .Rows - 1
For j = 0 To .Cols - 1
.TextMatrix(i, j) = j + i + 1
Next
Next .TextMatrix(.Rows - 1, 0) = "合计:"
For i = 1 To .Cols - 1
For j = 1 To .Cols - 1
.TextMatrix(.Rows - 1, i) = .TextMatrix(.Rows - 1, i) + Val(.TextMatrix(j, i))
Next j
.Row = .Rows - 1
.Col = i - 1
.CellBackColor = .BackColorFixed
Next
.Height = .RowHeight(0) * (iRow + 4) - .RowHeight(0) / 2
.TopRow = 1
End With
aa = False
Call fg_Scroll
End SubPrivate Sub fg_Scroll()
With fg
If aa = True Then
.RowPosition(BottomFixRow) = .Rows - 1
End If
.RowPosition(.Rows - 1) = iRow + .TopRow
BottomFixRow = iRow + .TopRow
aa = True
End With
End Sub
全屏按用户屏幕大小改变MSHFlexGrid1的大小的时候,iRow的值无法确定。
ms是一个MSHFlexGrid,固定列是0,或者1都没有问题
Option ExplicitPrivate Sub Command1_Click()
Dim i, j
For i = 0 To 4
For j = 0 To 3
Ms.Col = j
Ms.Row = i
Ms.Text = i * j
Next j, i
Ms.MergeCells = 1
Ms.MergeRow(5) = True
For j = 0 To 3
Ms.Col = j
Ms.Row = 5
Ms.Text = " "
Next j
For j = 0 To 3
Ms.Col = j
Ms.Row = 6
Ms.Text = "-"
Next j
End Sub
Option Explicit
Dim aa As Boolean
Dim BottomFixRow As Integer
Dim iRow, indexRow As Integer '显示行数Private Sub Form_Load()
Dim i As Integer, j As Integer
Call ResizeInit(Me)
With fg
.Rows = 50
.Cols = 20
For i = 0 To .Rows - 1
For j = 0 To .Cols - 1
.TextMatrix(i, j) = j + i + 1
Next
Next
End With
End SubPrivate Sub fg_Scroll()
With fg
If aa = True Then
.RowPosition(BottomFixRow) = .Rows - 1
End If
.RowPosition(.Rows - 1) = iRow + .TopRow
BottomFixRow = iRow + .TopRow
aa = True
End With
End Sub
Private Sub Form_Resize()
Call ResizeForm(Me) '确保窗体改变时控件随之改变
Dim i As Integer, j As Integer If Val(indexRow) <> 0 Then fg.RemoveItem indexRow
With fg
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = "合计:"
.RowHeight(.Rows - 1) = .RowHeight(.Rows - 1) + 80
For i = 1 To .Cols - 1
For j = 1 To .Cols - 1
.TextMatrix(.Rows - 1, i) = Val(.TextMatrix(.Rows - 1, i)) + Val(.TextMatrix(j, i))
Next j
.Row = .Rows - 1
.Col = i - 1
.CellBackColor = .BackColorFixed
Next
iRow = (.Height + .RowHeight(0) / 2) / .RowHeight(0) - 4
.TopRow = 1
End With
aa = False
Call fg_Scroll
indexRow = iRow + fg.TopRow
End Sub底部有一行白色 --设置合计行高遮住后面的
全屏按用户屏幕大小改变MSHFlexGrid1的大小的时候,iRow的值无法确定。 --根据控件高度得到行数代码给了,再不知道变通你就不用做这个了
改变大小吗?left top height width不就可以解决