技术开发 频道

Rational 识别 Delphi TDBGrid的解决方法

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

    最后代码如下:  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
 

0
相关文章