spread帮助中如是说:
Occurs for each cell in the fpSpread control before it receives data from the database and before it writes data to the database, if the DataFillEvent property is set to True for the cell.
但是设置了DataFillEvent=True以后,却只有一列起作用,为什么?
我试了好久也没有解决,后来仔细研究了一下spread附带的范例,其是一个正在采用了这一事件:
C:/Program Files/FarPoint Technologies/Spread70/Samples/ActiveX/VB6/Overview中的Bound.frm表单,它是这样写的
spread.row
=
-
1
spread.Col
=
1
spread.DataField
=
"
Id
"
spread.DataFillEvent
=
False
'
'这里
spread.Celltype
=
3
spread.Col
=
2
spread.DataField
=
"
Name
"
spread.DataFillEvent
=
False
'
'这里
spread.Celltype
=
1
spread.Col
=
3
spread.DataField
=
"
YesNo
"
spread.DataFillEvent
=
True
'
fire datafill event so we can make cells say yes or no
spread.Celltype
=
1
原来DataFillEvent是对每一列的有效的。
他的DataFill事件是这样写的,也可以参照一下!
Private
Sub
spread_DataFill(ByVal Col
As
Long
, ByVal row
As
Long
, ByVal DataType
As
Integer
, ByVal fGetData
As
Integer
, Cancel
As
Integer
)
Dim
v
As
Variant
Dim
ret
As
Integer
If
Col
=
3
Then
If
fGetData
Then
spread.Col
=
Col
spread.row
=
row
ret
=
spread.GetDataFillData(v,
11
)
If
v
=
0
Then
spread.Text
=
"
No
"
Else
spread.Text
=
"
Yes
"
End
If
Cancel
=
True
Else
spread.Col
=
Col
spread.row
=
row
If
spread.Text
=
"
Yes
"
Then
v
=
1
Else
: v
=
0
End
If
ret
=
spread.SetDataFillData(v)
Cancel
=
True
End
If
End
If
End Sub
另外,要注意SetDataFillData和GetDataFillData只能用于DataFill事件中,在其它地方使用是无效的!

当设置fpSpread控件的DataFillEvent属性为True后,发现只有第一列响应事件。通过研究Spread附带的范例,发现在Bound.frm表单中,DataFill事件是针对每列生效的。解决问题的关键在于正确理解和使用DataFill事件,以及注意SetDataFillData和GetDataFillData方法的应用场景,它们必须在DataFill事件内部使用。
1890

被折叠的 条评论
为什么被折叠?



