mshflexgrid控制元件中,如何實作表頭列合并,單元格不合并。
如:
表頭: 8月15日 欠休數
星期一 欠休數
表格: 張三 3
李四 3
要求表頭的欠休數合并,但表格的3不合并
uj5u.com熱心網友回復:
資料的偶數行在資料字串前后各加上一個 Chr(255) 不可見字符(對于居中對齊):Private Sub Form_Load()
With MSFlexGrid1
.Cols = 2
.Rows = 0
.AddItem "8月15日" & vbTab & "欠休數", 0
.AddItem "星期一" & vbTab & "欠休數", 1
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & Chr(255) & "3" & Chr(255)
.FixedCols = 0
.FixedRows = 2
.ColAlignment(0) = 4
.ColAlignment(1) = 4
.MergeCells = flexMergeRestrictColumns
.MergeCol(1) = True
End With
End Sub
uj5u.com熱心網友回復:
你這種解決辦法只適合行數比較少得情況,我是從資料庫中呼叫的資料,所有行數比較多,沒辦法一條一條的加呀,求解決方案,謝謝大神!!!uj5u.com熱心網友回復:
大神不回復,自己幫頂!!!!!!!!!!!!!!!!!!!!!!!!uj5u.com熱心網友回復:
你可以只處理顯示出來的部分試試,類似這樣:Private Sub Form_Load()
With MSHFlexGrid1
.Cols = 2
.Rows = 0
.AddItem "8月15日" & vbTab & "欠休數", 0
.AddItem "星期一" & vbTab & "欠休數", 1
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.AddItem "張三" & vbTab & "3"
.AddItem "李四" & vbTab & "3"
.FixedCols = 0
.FixedRows = 2
.ColAlignment(0) = 4
.ColAlignment(1) = 4
.MergeCells = flexMergeRestrictColumns
.MergeCol(1) = True
End With
Call MSHFlexGrid1_Scroll
End Sub
Private Sub MSHFlexGrid1_Scroll()
Dim i As Long
With MSHFlexGrid1
For i = .TopRow To .Rows - 1
If .RowData(i) <> 1 Then
If i Mod 2 = 0 Then
.TextMatrix(i, 1) = " " & .TextMatrix(i, 1) & " "
End If
.RowData(i) = 1 '標記一下,這行已經處理過了,下次再顯示這一行就別再加空格了
End If
Next
End With
End Sub
uj5u.com熱心網友回復:
在Scroll事件中寫代碼填充左右兩邊的特殊字符。上面的寫錯了,漏了一個條件
Private Sub MSHFlexGrid1_Scroll()
Dim i As Long
With MSHFlexGrid1
For i = .TopRow To .Rows - 1
If .RowIsVisible(i) And .RowData(i) <> 1 Then
If i Mod 2 = 0 Then
.TextMatrix(i, 1) = " " & .TextMatrix(i, 1) & " "
End If
.RowData(i) = 1 '標記一下,這行已經處理過了,下次再顯示這一行就別再加空格了
End If
Next
End With
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/136389.html
標籤:控件
