Foxtable(狐表)用户栏目专家坐堂 → [求助]如何根据相对位置确定其坐标?


  共有10556人关注过本帖树形打印复制链接

主题:[求助]如何根据相对位置确定其坐标?

帅哥哟,离线,有人找我吗?
don
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/3/29 16:41:00 [只看该作者]

多謝老大!不過還是沒達標喲:不是顶上控件 Is Null 其y坐标就 = 0,因如有左側控件,應該根據左側控件一直往上追,直到左上角控件來確定其坐標!

如表中A13,只標出左側為A12,則應根據以下數據計算:

图片点击可在新窗口打开查看此主题相关图片如下:b11.jpg
图片点击可在新窗口打开查看


A13:X=1700(A01+A02+A03+A11+A12的寬)
A13:y= 1000(A03+A07+A08+A09的高)
[此贴子已经被作者于2012-3-29 16:42:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/3/29 16:46:00 [只看该作者]

我有点糊涂了,一般来说,有左侧控件或顶上控件中的任何一个,都可以确定这个控件的位置了,为什么BBB同时有左侧控件和顶上控件?

 回到顶部
帅哥哟,离线,有人找我吗?
don
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/3/29 17:10:00 [只看该作者]

以下是引用狐狸爸爸在2012-3-29 16:46:00的发言:
我有点糊涂了,一般来说,有左侧控件或顶上控件中的任何一个,都可以确定这个控件的位置了,为什么BBB同时有左侧控件和顶上控件?
规则:1.只标左侧控件,表示与左侧控件等高,Y坐标一样;2.只标上层控件,表示与上层控件等宽,X坐标一样;
     3.BBB同时标左侧和上层控件,表示这是个不规则控件,其X是左侧控件X+左侧控件的宽,Y是上层控件Y+上层控件的高.


 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2012/3/29 17:19:00 [只看该作者]

以下是引用don在2012-3-29 15:38:00的发言:
唐兄辛苦了!不過我想不能根據名稱排序的.
我的初衷是:大量的控件,不能讓用戶一個一個地確定坐標,想用這個較簡單的相對坐標方法,
用戶只要分別列出控件的寬,高及其左側及上層控件,坐標就能確定下來.

don兄,根据名称排序只是在代码运行过程中排序,并不妨碍表中数据行的顺序啊?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/3/29 17:51:00 [只看该作者]

For Each dr As DataRow In DataTables("坐标").Select("顶上控件 Is Null")
    Dim dr1 As DataRow = dr
    dr1("y坐标") = 0
    Do
        Dim dr2 As DataRow  = DataTables("坐标").Find("顶上控件 = '" & dr1("名称") & "'")
        If dr2 IsNot  Nothing
            If dr2.IsNull("左侧控件")  Then
                dr2("X坐标") = dr1("X坐标")
            End If
            dr2("y坐标") = dr1("y坐标") + dr1("高")
            dr1 = dr2
        Else
            Exit Do
        End If
    Loop
Next
For Each dr As DataRow In DataTables("坐标").Select("左侧控件 Is Null")
    Dim dr1 As DataRow = dr
    dr1("x坐标") = 0
    Do
        Dim dr2 As DataRow  = DataTables("坐标").Find("左侧控件 = '" & dr1("名称") & "'")
        If dr2 IsNot  Nothing
            dr2("x坐标") = dr1("x坐标") + dr1("宽")
            If dr2.IsNull("顶上控件") Then
                dr2("Y坐标") = dr1("Y坐标")
            End If
            dr1 = dr2
        Else
            Exit Do
        End If
    Loop
Next

 回到顶部
帅哥哟,离线,有人找我吗?
don
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/3/30 12:04:00 [只看该作者]

以下是引用唐尸三摆手在2012-3-29 17:19:00的发言:

don兄,根据名称排序只是在代码运行过程中排序,并不妨碍表中数据行的顺序啊?


不好意思,昨晚有点累,早早睡了.图片点击可在新窗口打开查看


如把表中名称A03改为B03,相应左侧和上层也改为B03,则数据不正确,B03前面应为A01,A02但代码根据名称排序,结果B03排后了.这就是我说不能根据名称排序的原因.


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/3/30 12:29:00 [只看该作者]

表事件写代码,修改左侧控件和顶部控件后,修改设计到该控件的所有X、y坐标的值最方便!

 回到顶部
帅哥哟,离线,有人找我吗?
don
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2012/3/30 12:47:00 [只看该作者]

以下是引用程兴刚在2012-3-30 12:29:00的发言:
表事件写代码,修改左侧控件和顶部控件后,修改设计到该控件的所有X、y坐标的值最方便!
呵呵,我昨晚也想到表事件.
不过这不能解决用户乱序输入的问题(正确顺序输入是:从左而右,从上而下)


 回到顶部
总数 18 上一页 1 2