Foxtable(狐表)用户栏目专家坐堂 → [已解决]如何判断焦点是否落在table控件上?


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

主题:[已解决]如何判断焦点是否落在table控件上?

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


加好友 发短信
等级:三尾狐 帖子:677 积分:6222 威望:0 精华:0 注册:2012/1/20 17:53:00
[已解决]如何判断焦点是否落在table控件上?  发帖心情 Post By:2014/7/23 13:37:00 [只看该作者]

由于代码中用到CurrentTable,但是执行代码的时候,当前表有的时候根本没有选择,也就是“焦点”没有落在table控件上,这时候如果执行代码,就会报错,如何加个条件判断一下呢?请老师帮我看下吧

(以下代码写在菜单的buttun click事件中)

 

 

If   XXXXXXXXXXXXXXXXX Then '该条件确保保存视图的时候焦点落在了当前表上,否则引用CurrentTable会报错

 

Dim dr As DataRow
Dim filter As String = " [项目] = '视图控制' And [参数1] ='" & user.Name & "' And [参数2] = '" &  CurrentTable.Name & "' and [参数3] = '" & CurrentTable.Form.Name & " '"
dr = DataTables("项目参数表").Find(filter)
If dr Is Nothing Then '如果找不到的话
    Tables("项目参数表").AddNew()
Tables("项目参数表").Current("项目") = "视图控制"
    Tables("项目参数表").Current("参数1") = user.Name
    Tables("项目参数表").Current("参数2")= CurrentTable.Name
Tables("项目参数表").Current("参数3")= CurrentTable.Form.Name
    Tables("项目参数表").Current("参数9") = CurrentTable.GetColVisibleWidth()
Else '如果找到的话,那么更新最新的列格式值
    dr("参数9") = CurrentTable.GetColVisibleWidth()
End If
DataTables("项目参数表").Save

MessageBox.Show("保存成功!","提示")

End If

[此贴子已经被作者于2014-7-23 17:07:43编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/23 14:10:00 [只看该作者]

 不很理解你的意思。

 

 CurrentTable.Form ?

 

 这个是窗口表?焦点设置在窗口表上的代码是这样 Forms("窗口1").Controls("Table1").Select


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/7/23 14:10:00 [只看该作者]

判断 if currenttable.name="XX" then

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


加好友 发短信
等级:三尾狐 帖子:677 积分:6222 威望:0 精华:0 注册:2012/1/20 17:53:00
  发帖心情 Post By:2014/7/23 15:59:00 [只看该作者]

老师,关于这个问题做了个例子,上传了。见附件!问题是:当项目刚打开,如果直接去点击“保存视图”,马上报错!原因是 CurrentTable的问题,我觉得,得加个判断条件。

 

例子中保存视图按钮功能:各个窗口中的table控件的列宽和列顺序根据用户保存在数据库中。再次打开时,读取用户保存的数据。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:保存视图和多个主窗口例子.zip

[此贴子已经被作者于2014-7-23 16:25:52编辑过]

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


加好友 发短信
等级:三尾狐 帖子:677 积分:6222 威望:0 精华:0 注册:2012/1/20 17:53:00
  发帖心情 Post By:2014/7/23 16:30:00 [只看该作者]

有点甜老师,BIN老师,问题不行呀,看看我的例子,你就明白我的意思了。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/23 16:52:00 [只看该作者]

第一点,代码这样写。

 

Dim dr As DataRow
Dim frm As String = Nothing
If CurrentTable.Form IsNot Nothing Then
    frm = CurrentTable.Form.Name
End If

Dim filter As String = " [项目] = '视图控制' And [参数1] ='" & user.Name & "' And [参数2] = '" &  CurrentTable.Name & "' and [参数3] = '" & frm & " '"
dr = DataTables("项目参数表").Find(filter)
If dr Is Nothing Then '如果找不到的话
    Tables("项目参数表").AddNew()
    Tables("项目参数表").Current("项目") = "视图控制"
    Tables("项目参数表").Current("参数1") = user.Name
    Tables("项目参数表").Current("参数2")= CurrentTable.Name
    Tables("项目参数表").Current("参数3")= frm
    Tables("项目参数表").Current("参数9") = CurrentTable.GetColVisibleWidth()
Else '如果找到的话,那么更新最新的列格式值
    dr("参数9") = CurrentTable.GetColVisibleWidth()
End If
DataTables("项目参数表").Save

MessageBox.Show("保存成功!","提示")


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/23 16:52:00 [只看该作者]

 第二点,你打开窗口的时候,用代码设置让表控件获取焦点

 

e.Form.Controls("Table1").Select

 


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


加好友 发短信
等级:三尾狐 帖子:677 积分:6222 威望:0 精华:0 注册:2012/1/20 17:53:00
  发帖心情 Post By:2014/7/23 17:07:00 [只看该作者]

是的,很好的办法。谢谢了图片点击可在新窗口打开查看


 回到顶部