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


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

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

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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2012/3/29 13:31:00 [显示全部帖子]

BBB左侧为A01,顶上为AA1,则它坐标为(300,1800);    

坐标有问题吧,是不是应该300,1500


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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2012/3/29 13:42:00 [显示全部帖子]

BBB的坐标貌似有问题,你再看下,自己调整对应代码吧,感觉应该是1500或2000
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:00.table

[此贴子已经被作者于2012-3-29 13:42:44编辑过]

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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2012/3/29 13:51:00 [显示全部帖子]

修正一下代码

Dim dr As DataRow
Dim dt As DataTable = DataTables("坐标")
Dim str As String
Dim Dic As new Dictionary(of String,DataRow)
For Each dr In dt.DataRows
    dic.Add(dr("名称"),dr)
Next
For Each str In dic.Keys
    dr = dic(str)
    If dr.Isnull("左侧控件") AndAlso dr.Isnull("顶上控件") Then
        dr("X坐标") = 0
        dr("Y坐标") = 0
    ElseIf dr.Isnull("左侧控件") = False AndAlso dr.Isnull("顶上控件") Then
        dr("X坐标") = dic(dr("左侧控件"))("X坐标")  + dic(dr("左侧控件"))("宽")
        dr("Y坐标") = dic(dr("左侧控件"))("Y坐标") 
    ElseIf dr.Isnull("左侧控件") AndAlso dr.Isnull("顶上控件") = False Then
        dr("X坐标") = dic(dr("顶上控件"))("X坐标")
        dr("Y坐标") = dic(dr("顶上控件"))("Y坐标") + dic(dr("顶上控件"))("高")
    ElseIf dr.Isnull("左侧控件") = False AndAlso dr.Isnull("顶上控件") = False Then
        dr("X坐标") = dic(dr("左侧控件"))("X坐标") + dic(dr("左侧控件"))("宽")
        dr("Y坐标") = dic(dr("顶上控件"))("Y坐标") + dic(dr("顶上控件"))("高")
    End If
Next

[此贴子已经被作者于2012-3-29 13:51:00编辑过]

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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2012/3/29 15:16:00 [显示全部帖子]

这样再试试

Dim dr As DataRow
Dim dt As DataTable = DataTables("坐标")
Dim str As String
Dim Dic As new Dictionary(of String,DataRow)
For Each dr In dt.Select("","名称")        '如果有空行,改下条件For Each dr In dt.Select("名称 is not null","名称")
    dic.Add(dr("名称"),dr)
Next
For Each str In dic.Keys
    dr = dic(str)
    If dr.Isnull("左侧控件") AndAlso dr.Isnull("顶上控件") Then
        dr("X坐标") = 0
        dr("Y坐标") = 0
    ElseIf dr.Isnull("左侧控件") = False AndAlso dr.Isnull("顶上控件") Then
        dr("X坐标") = dic(dr("左侧控件"))("X坐标")  + dic(dr("左侧控件"))("宽")
        dr("Y坐标") = dic(dr("左侧控件"))("Y坐标") 
    ElseIf dr.Isnull("左侧控件") AndAlso dr.Isnull("顶上控件") = False Then
        dr("X坐标") = dic(dr("顶上控件"))("X坐标")
        dr("Y坐标") = dic(dr("顶上控件"))("Y坐标") + dic(dr("顶上控件"))("高")
    ElseIf dr.Isnull("左侧控件") = False AndAlso dr.Isnull("顶上控件") = False Then
        dr("X坐标") = dic(dr("左侧控件"))("X坐标") + dic(dr("左侧控件"))("宽")
        dr("Y坐标") = dic(dr("顶上控件"))("Y坐标") + dic(dr("顶上控件"))("高")
    End If
Next

[此贴子已经被作者于2012-3-29 15:19:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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兄,根据名称排序只是在代码运行过程中排序,并不妨碍表中数据行的顺序啊?


 回到顶部