热情软件屋

 

移动数据感应(Dataware)的VBX网格控件当前行


编号:QA000015
建立日期: 1998年2月1日 最后修改日期:1998年2月1日
所属类别:

Peter Zhu:
    我在Visual Basic 4.0 16位环境中使用数据感应(Dataware)的VBX网格控件(如FarPoint公司的Spread 2.5或Sheridan公司的DataGrid 1.0e),发现在执行Data1.recordset.findfirst "ID=10"时,该控件的当前行并不跳转到ID=10的那一行上去,而如果把VBX控件换成OCX控件则不存在此问题,或者在Visual Basic Pro 3.0 环境中使用以上的VBX控件,执行同样命令,也不存在问题。这是怎么回事?
    

回答:

    你所说的情况确实存在。Visual Basic在执行Data1.RecordSet.FindFirst "ID=10"后要向VBX发送一条VBM_DATA_REQUEST消息,最初,我怀疑Visual Basic没有发出这条消息,但实际情况是发出了,这一点我用VBTools v5.0的几个数据感应控制验证了。那么, 我认为可能性最大的原因是Visual Basic 4.0和3.0在内部数据结构方面不兼容,所以在Visual Basic Pro 3.0 环境中正常使用的VBX控件在4.0中不正常了。目前已经知道,两个版本在许多与VBX有关的方面不兼容,如Visual Basic 4.0内部的VBSetVariant函数就存在错误,Visual Basic 4.0在发送消息方面也同Visual Basic有所不同。Visual Basic 4.0对VBX控件和OCX控件的处理方法不一样,VBX控件是通过VB API同Visual Basic交换数据的,而OCX控件使用OLE API。如果你一定要在Visual Basic 4.0中使用VBX,只能使用一些特别的处理方法,如(以Spread 2.5为例):
     Data1.RecordSet.FindFirst "ID=10"
     Grid1.Row = Data1.RecordSet.AbsolutePosition
     Grid1.Col = 0
     Grid1.Action = 0 ' 设置Spread控制的当前行和列
    

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio