在 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 索引时出错。
所以,我的问题:
- 遍历
SSDBGrid
中每一列的正确方法是什么?
- 其次,我将如何获取正确列的列索引以传递给函数?
答案实际上比您想象的要简单。您的代码 非常 差不多了。
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 的值(也是列号),因此报告中的参数字段将以该列标题作为标题。
我正在 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 索引时出错。
所以,我的问题:
- 遍历
SSDBGrid
中每一列的正确方法是什么? - 其次,我将如何获取正确列的列索引以传递给函数?
答案实际上比您想象的要简单。您的代码 非常 差不多了。
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 的值(也是列号),因此报告中的参数字段将以该列标题作为标题。