我正在VB6中使用一个VB6控件,但我在检索合并列的ColPos属性时也遇到了一些问题。我生成的网格如下所示:
-----------------------------
| 8/17/2010 |
-----------------------------
| Column 1 | Column 2 |
-----------------------------第一行是固定的,两列被合并,因此这两列都包含第一行中的8/17/2010。
在Click事件期间,我在第二行的一个单元格上定位一个文本框,当我使用FlexGrid的ColPos和RowPos属性设置其Left和Top属性时,我的textbox定位在第1列上。即使在第2列中单击,也会发生这种情况。
我已经检查了Col属性,在单击第二列后,它正确地设置为2,但是ColPos(1)和ColPos(2)都返回相同的值,即从列1的左侧边缘到控件的左侧边缘的距离。
当在柔性网格上禁用合并时,问题就消失了,但我宁愿继续使用它,因为它使网格更加可读性更强。
当列中的另一个单元格与另一个单元格合并时,是否有任何方法检索所选列的正确位置,还是需要手动计算列位置?
发布于 2010-08-19 16:31:41
还没有找到通过控件来完成这个任务的方法,但是这里有一个函数,我把它放在一起完成了这个任务。它从选定的单元格向后计数,直到到达与其合并的最左边单元格,然后将合并单元格的宽度添加到第一个单元格的位置。也许可以清理一些,但这确实有效。
Private Function RealColPos(Col As Integer, grid as MSFlexGrid)
With grid
Dim i As Integer, merged As Integer
i = Col - 1: merged = 0
Do While .ColPos(Col) = .ColPos(i)
merged = merged + 1
i = i - 1
Loop
If merged > 0 Then
RealColPos = .ColPos(Col - merged)
Do While merged > 0
RealColPos = RealColPos + .ColWidth(Col - merged)
merged = merged - 1
Loop
Else
RealColPos = .ColPos(Col)
End If
End With
End Functionhttps://stackoverflow.com/questions/3505348
复制相似问题