• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Rational 识别 Delphi TDBGrid的解决方法

发布: 2008-9-18 14:11 | 作者: pcl | 来源: 51testing | 查看: 68次 | 进入软件测试论坛讨论

领测软件测试网

虽然赋值成功,但是datagridMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">无法显示你需要的数据(这里需要研究一下),因为时间的缘故,就用第二种方式坐标的方式来实现,考虑多平台共享使用,写SetGridFocus函数,思路这样得到tdbgrid对象,得到其中column的属性宽高,计算坐标(这些都在函数内部实现),其中移动有个固定值24是追踪tdbgrid代码中defaultHeight24

最后代码如下:

Sub SetGridFocus(strObject as String, strCol as String, strRow as String, strValue as String)

  

   Dim iResult as Integer

   Dim iCount as Integer

   Dim ColWidth() as integer

   Dim iWidth as Integer

  

   Dim strColPos as Integer

   Dim strRowPos as Integer

   Dim strCor as String

  

   Dim iTemp as integer

  

   strColPos = 0

   strRowPos = 0

   iTemp = 0

  

   SQAGetProperty strObject ,"Columns.Count", iCount

  

   if iCount <> 0  then

      Redim ColWidth(iCount - 1)

     

      While iTemp < iCount

         iResult = SQAGetProperty (strObject, "Columns.Items(" + CStr(iTemp) +").Width",iWidth)

         ColWidth(iTemp) = iWidth

         iTemp = iTemp + 1

     wend

     

   End if

      strColPos = 20

      if CInt(strCol) <> 1 then

          for iTemp = 1 to CInt(strCol)-1

                strColPos = strColPos+ ColWidth(iTemp-1)

          next iTemp         

      End if         

     

      for iTemp = 1 to CInt(strRow)

         strRowPos = 24 +strRowPos

      next iTemp

     

     

     

   strCor = "Coords=" & strColPos &","+CStr(strRowPos)

  

  

   GenericObject Click, strObject, strCor

   InputKeys strValue

   stop

   strCor = "Coords=" & strColPos &","+CStr(strRowPos + 24)

   GenericObject Click, strObject, strCor  

  

  

End Sub

 

上编写的还有很多疏漏的地方,对于浮动文本框赋值成功,却无法改动tdbgrid中的值没有深入研究,该函数在实际应用中还有个小问题,没有做到很完全“周到“ ,下回有时间改正。

备注:

最后我把代码进行优化和扩展,开发了针对grid的相关函数,下边是其中之一

//得到列数

Function GetColCount(sGridRecogStr as String) as Integer

    Dim Result as Integer

    Dim vValue as Variant

    Dim sLogMessage as String

    Dim sErrorMessage as String

 

    grdGetRowCount = -1

 

    Result = SQAGetProperty(sGridRecogStr, "Column.Count", vValue)

    If Result = sqaSuccess Then

        GetRowCount = CInt(vValue)

    Else

        sLogMessage = "无法得到Grid的列数

        sErrorMessage = "[" & CStr(Result) & " = " & Error(Result) &"]"

        SQALogMessage sqaFail, sLogMessage, sErrorMessage

    End If

   

End Function

 

就到这里吧。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网