在 VB6 中从 SSDBGrid 获取列索引

Getting Column Index from SSDBGrid in VB6

我正在 Crystal 报告中生成一份报告,其中列顺序必须与它们在 VB6 中的 SSDBGrid 中显示的顺序相匹配。

为此,我决定最好遍历网格中的每一列,并调用一个函数将参数字段值设置为正确的标题(因此,第 0 列的标题将是参数字段的值@Col1 等)

无论如何,我的代码是

Dim c As Column
Dim cName As String

For Each c In FShow_All_Accounts.grd_accounts.Columns
   cName = "@Col" & c.ListIndex
   Call setColumnHeaders(c.Index)
   crxReport.ParameterFields.GetItemByName(cName).AddCurrentValue ("f")
Next

问题是,首先,将 c 的类型设置为 Column 并遍历 grd_accounts 中的每个 c 似乎是不正确的 - grd_accounts 是一个 SSDBGrid,其次,它在尝试 return 索引时出错。

所以,我的问题:

答案实际上比您想象的要简单。您的代码 非常 差不多了。

Dim c As Column
Dim i As String
Dim cname As String

i = 0

For Each c in grd_accounts.Columns
  i = i + 1
  cName = "@Col" & i
  crxReport.ParameterFields.GetItemByName(cName).AddCurrentValue (c.Caption)
Next

不需要辅助函数。这将遍历每一列,将 cName 设置为“@Col”和 i 的值(也是列号),因此报告中的参数字段将以该列标题作为标题。