以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求功能实现,主窗口中当前控件不包含表控件的时候  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83398)

--  作者:lovemaders
--  发布时间:2016/4/8 8:15:00
--  求功能实现,主窗口中当前控件不包含表控件的时候


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:关于测试.foxdb

[此贴子已经被作者于2016/4/8 11:42:55编辑过]

--  作者:lovemaders
--  发布时间:2016/4/8 8:19:00
--  

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

如图,最底下那个提示是要实现的功能,代码在项目的systemidle里面,要求是,因为这是表里的主窗口所以底下提示默认的是当前表,我想实现是,比如主界面这个窗口里面没有表,下面的那个就提示当前窗口没有表,部门因为点开之后就有个窗口表在里面,所以就直接提示是哪个表,麻烦的是公司,因为里面有个页面合集控件,默认打开第一页,第一页里面没有表,用代码切换到第二页的时候,表在第二页上,当打开默认第一页的时候因为没有表也是提示当前窗口没有表,点开第二页的时候提示是哪个表。不知道我说的明不明白具体看下项目,谢谢啦。

[此贴子已经被作者于2016/4/8 8:22:59编辑过]

--  作者:Hyphen
--  发布时间:2016/4/8 8:50:00
--  
用一个全局变量记录当前页,事件中遍历判断当前页是否包含表控件


--  作者:lovemaders
--  发布时间:2016/4/8 8:53:00
--  这样的话
主界面和那个部门是打开就有和打开就没有可以判断,但是公司那个里面有个页面合集,是有表控件的,但是默认第一样是没有表控件的,这个怎么弄,而且我这个代码是写在systemidle事件中的不能用e.form,难道将代码写在每个窗口的afterload事件中去?
[此贴子已经被作者于2016/4/8 9:12:46编辑过]

--  作者:大红袍
--  发布时间:2016/4/8 9:41:00
--  
根本就无法自动检测的。你必须去写每个窗口的事件,比如 tabcontrol的选择页事件。
[此贴子已经被作者于2016/4/8 9:41:01编辑过]

--  作者:lovemaders
--  发布时间:2016/4/8 9:52:00
--  那样的话相当麻烦了
那样的话相当麻烦了,每个窗口都要写代码判断啊?或者到了页面合集的时候每个页面切换都要判断啊?如果这样的话那项目命令里面的systemidle就不用写代码了,没有用systemidle代码替代每个窗口都判断的方法吗?
[此贴子已经被作者于2016/4/8 9:54:13编辑过]

--  作者:大红袍
--  发布时间:2016/4/8 10:06:00
--  

1、获取到当前窗口是什么窗口;

 

2、循环窗口所有控件,寻找TabControl;

 

3、然后循环Tabcontrol的当前选中页,看有没有Table。


--  作者:lovemaders
--  发布时间:2016/4/8 10:21:00
--  那样的意思也是有几个窗口就要在systemidle里面全部都列进去吗?
那样的意思也是有几个窗口就要在systemidle里面全部都列进去吗?没有其他方法吗
--  作者:大红袍
--  发布时间:2016/4/8 10:23:00
--  
以下是引用lovemaders在2016/4/8 10:21:00的发言:
那样的意思也是有几个窗口就要在systemidle里面全部都列进去吗?没有其他方法吗

 

谁叫你全部列出来啊?当前窗口你获取不到?知道窗口就可以遍历所有的控件啊。


--  作者:lovemaders
--  发布时间:2016/4/8 10:54:00
--  这个代码就不对,第一个IF没执行,这是窗口afterload
If Forms("底部共有").Opened Then
Dim lb2 As WinForm.Label = Forms("底部共有").Controls("label2")
  For  Each c  As WinForm.Control  In Forms("部门").Controls
    If Typeof c Is winform.Table Then
         Dim tw  As WinForm.Table = Forms("部门").Controls("table1")  \'c \'使用特定类型的变量引用控件      
         Dim Str2 As String = "正操作表名为:" & "【" & tw.Name & "】" & "  总行数:"
         \'\'\'Str2 = Str2 & t.Rows.Count & "  当前行:" & (t.Position + 1)
    End If
    \'\'\'If Typeof c Is WinForm.Table = False  Then  \'判断控件是否是文本框
            \'\'\'lb2.text = "当前窗口没有表"          
    \'\'\'End  If
  Next
End If
[此贴子已经被作者于2016/4/8 11:00:11编辑过]