Foxtable(狐表)用户栏目专家坐堂 → [求助]下拉窗口打开前会执行哪里的代码?


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

主题:[求助]下拉窗口打开前会执行哪里的代码?

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
[求助]下拉窗口打开前会执行哪里的代码?  发帖心情 Post By:2017/6/27 15:33:00 [只看该作者]

我现在的系统下拉窗口打开很慢,自己随便做个速度并不慢,下拉窗口打开前会执行哪里的代码哪?我要从哪里开始排查比较好哪?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 16:28:00 [只看该作者]

 看看你窗口的AfterLoad、DropDownOpening、DropDownOpened事件。

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/6/27 17:59:00 [只看该作者]

以下是引用有点色在2017/6/27 16:28:00的发言:
 看看你窗口的AfterLoad、DropDownOpening、DropDownOpened事件。

相同窗口,相同事件,在我随便做的样例里并不慢。我现在的系统里,有在CurrentTableChanged事件中写如下的代码

Vars("SysUpdatePrintInfo") = True

'***************自定义代码**************
Dim tname() As String = {"仓库名称下拉_Table1","在单量详情_Table1","金属同族库存详情_Table1","带条件的料号选择_Table1","带条件的料号选择_Table2","料号选择单选_Table1"}
Dim tnames As new List(of String)
tnames.AddRange(tname)
tname = New String() {"料号选择_Table1","料号选择_Table2"}
tnames.AddRange(tname)
If tnames.Contains(CurrentTable.Name) = False Then
    Dim cns As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ProjectPath & "wjexcel.mdb;Persist Security Info=False"
    If Connections("wjexcel").ConnectionString = cns Then
        For Each grp As RibbonMenu.Group In RibbonTabs("PorjectMenu").Groups
            grp.Visible = False
        Next
    Else
        For Each grp As RibbonMenu.Group In RibbonTabs("PorjectMenu").Groups
            grp.Visible = False
        Next
        If CurrentTable.Name = "MainTable" Then
            RibbonTabs("SM").Selected = True
        Else
            RibbonTabs("PorjectMenu").Selected = True
        End If
        Dim dr As DataRow = DataTables("FTcaidanQX").SQLFind("表名 = '" & MainTable.Name & "'")
        If dr IsNot Nothing Then
            Dim cdsz() As String
            If CurrentTable.AllowEdit = True Then
                cdsz = dr("新增可见").split("|")
            Else
                cdsz = dr("查看可见").split("|")
            End If
            Dim cds As new List(of String)
            cds.AddRange(cdsz)
            For Each grp As RibbonMenu.Group In RibbonTabs("PorjectMenu").Groups
                If cds.Contains(grp.Name) Then
                    grp.Visible = True
                    For Each itm As RibbonMenu.RibbonItem In RibbonTabs("PorjectMenu").Groups(grp.Name).Items
                        If cds.Contains(itm.Name) Then
                            itm.Visible = True
                        Else
                            itm.Visible = False
                        End If
                    Next
                End If
            Next
        End If
    End If
    Dim qhcd As RibbonMenu.ToggleButton = RibbonTabs("PorjectMenu").Groups("排序与筛选").Items("切换")
    If CurrentTable.Filter > "" Then
        qhcd.Pressed = True
    Else
        qhcd.Pressed = False
    End If
End If


 


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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/6/27 18:00:00 [只看该作者]

现在慢的窗口就是“仓库名称下拉”,本来想把我这个菜单加到例子上看会不会慢的,结果导入模板,直接报错了。版主让我找客服恢复,本就是做例子的程序,我倒没有急着去恢复。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/27 18:46:00 [只看该作者]

1、去掉代码后速度是否变快?

 

2、把相关表的事件代码都删除后测试。


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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/6/27 19:33:00 [只看该作者]

以下是引用有点色在2017/6/27 18:46:00的发言:

1、去掉代码后速度是否变快?

 

2、把相关表的事件代码都删除后测试。

去掉CurrentTableChanged事件中的代码后,速度就快了,这个代码如何优化,或是在有下拉时不让生效哪?


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


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/27 20:23:00 [只看该作者]

CurrentTableChanged是经常会触发的,这种情况就没有必要使用动态连接数据库了,直接设置数据源,然后把这个表的数据加载进来操作。

动态连接数据库,sqltable,sqlfind,sqlcommand等等这些用法不要滥用,该加载使用的还是要加载。过犹不及!

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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/6/28 7:35:00 [只看该作者]

以下是引用有点蓝在2017/6/27 20:23:00的发言:
CurrentTableChanged是经常会触发的,这种情况就没有必要使用动态连接数据库了,直接设置数据源,然后把这个表的数据加载进来操作。

动态连接数据库,sqltable,sqlfind,sqlcommand等等这些用法不要滥用,该加载使用的还是要加载。过犹不及!

SQLFind改成了FInd,但下拉打开时仍有很明显的延迟。是不是在打开下拉窗口时,他先去其它地方执行了一圈?打开下拉时,如何关掉这个事件?


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/28 8:24:00 [只看该作者]

CurrentTableChanged 事件判断。

 

If currentTable.Name = "你下拉窗口表名" Then

    msgbox("进入了")

    Return

End If

 

'原本的其余的代码。


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


加好友 发短信
等级:四尾狐 帖子:820 积分:5641 威望:0 精华:1 注册:2015/11/28 14:00:00
  发帖心情 Post By:2017/6/28 8:53:00 [只看该作者]

这样写不行。我这里最早是这样写的,没有用,后来我改成了现在这样还是不行,"仓库名称下拉_Table1"是我现在的下拉窗口里的表名。

Dim tname() As String = {"仓库名称下拉_Table1","在单量详情_Table1","金属同族库存详情_Table1","带条件的料号选择_Table1","带条件的料号选择_Table2","料号选择单选_Table1"}
Dim tnames As new List(of String)
tnames.AddRange(tname)
tname = New String() {"料号选择_Table1","料号选择_Table2"}
tnames.AddRange(tname)
If tnames.Contains(CurrentTable.Name) = False Then
...

end if

具体的可以看我3楼的代码。

[此贴子已经被作者于2017/6/28 8:56:02编辑过]

 回到顶部
总数 14 1 2 下一页