spread中datafill事件为什么不起作用?

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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事件中,在其它地方使用是无效的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值