获取数据窗口控件目前录入焦点的坐标(转)

获取数据窗口控件目前录入焦点的坐标

我的一个报表需要文本在行里面移动,以前总是不能精确移动位置,这篇文章对我有启发.

<<-----

long ll_header,ll_Detail,ll_postion//,ll_oth
ll_header = Long(dw_print.Describe("DataWindow.Header.Height"))
ll_Detail = Long(dw_print.Describe("DataWindow.Detail.Height"))*(li_row2 - 0 ) - 8
ll_postion = ll_header + ll_Detail 
//st_note.visible = true
//st_note.text = 'OTHER='+string(ll_oth)+'-Header.Height='+string(ll_header)+'-Detail='+string(ll_Detail)
dw_print.modify("mtd4_t.y = "+ string(ll_postion ))

dw_print.modify("gros4_t.y = "+ string(ll_postion))

------>>

http://www.myexception.cn/pb/1132489.html

获取数据窗口控件当前录入焦点的坐标
想法如下,在数据窗口某个字段中录入数据时立即把焦点转到一个文本框上,我想此时用文本框覆盖此位置,即sle_1.move(x,y),想知道如何得到此处的坐标。
------解决思路----------------------
在ItemFocusChanged事件中写:
Long ll_X,ll_Y
ll_X=Long(This.Describe(string(dwo.name)+".x"))
ll_Y=Long(This.Describe(string(dwo.name)+".y"))+ Long(This.Describe("DataWindow.Detail.Height"))*(row - 1)
------解决思路----------------------

引用:
Long ll_X,ll_Y
ll_X=Long(This.Describe(string(dwo.name)+".x"))
ll_Y=Long(This.Describe(string(dwo.name)+".y"))+ Long(This.Describe("DataWindow.Header.Height"))+Long(This.Describe("DataWindow.Detail……



(1)grid类型的
x值:需要考虑HorizontalScrollMaximum、HorizontalScrollMaximum2、HorizontalScrollPosition、HorizontalScrollPosition2的值,和dwo本身的x值
y值:需要考虑dw是否显示titlebar,显示需要加上标题栏的高度,另外需要考虑header域的高度(可能又多个header),获取datawindow.FristRowOnPage(当前页面显示的第一个行的行号),然后计算当前行与第一个行的行数差,再乘上detail域的高度(当detail域的高度为autosizeheight时,则不要直接取detail的高度,而是取rowheight()),最后再加上dwo本身的y值

(2)freeform类型的
x值:需要考虑HorizontalScrollMaximum、HorizontalScrollPosition的值,和dwo本身的x值

y值:需要考虑dw是否显示titlebar,显示需要加上标题栏的高度,另外需要考虑header域的高度,需要考虑VerticalScrollMaximum、VerticalScrollPosition的值,最后再加上dwo本身的y值



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值