想法如下,在数据窗口某个字段中录入数据时立即把焦点转到一个文本框上,我想此时用文本框覆盖此位置,即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)
------解决方案--------------------
(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值