以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 目录树的闪烁为什么控制不了(上传了例子) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101701) |
||||
-- 作者:HappyFt -- 发布时间:2017/6/5 21:32:00 -- 目录树的闪烁为什么控制不了(上传了例子) 打开窗口时执行了一个函数统计目录树中的每个节点的可处理记录数,每点击一下节点目录树就会闪烁一次,反复查找就是下面这段代码导致的(注释掉就不闪) Dim dr,dr2,dr4,dr8 As DataRow dr2 = DataTables("TabFid").Find("wn = \'" & winName & "\' and winlb = \'flow\'") \'仅流程表单才起作用 If dr2 IsNot Nothing Then Dim tr1 As WinForm.TreeView = Forms("导航").Controls("Tr_All") Dim nd As winform.treenode Dim cmd As New SQLCommand cmd.ConnectionName = Mydata Dim dt As DataTable Dim nm As Integer Dim flt As String msgbox(1) tr1.StopRedraw() Dim fids As String \'定义一个流程编号集合 For Each nd In tr1.AllNodes If nd.Name = winName Then \'只遍历当前主表所在节点 Dim drs8 As List(of DataRow) drs8 = DataTables("ftbSet").Se lect("tbN = \'" & Mtb & "\' and (sqRole Like " & Role_All & ")","Fid") If drs8.Count > 0 Then \'---先集合用户有权处理的流程 For Each dr8 In drs8 fids = fids & "," & dr8("Fid") Next fids = fids.trim(",") If fids > "" Then \'---计算{事务提醒}中用户有权处理的待处理记录数()---------------------- flt = "单据名称 = \'" & Mtb & "\' And sys_Fbh In (" & fids & ") And ((sys_Fbh = 1 And (接收人 Like " & Role_swtx & " or 接收人 Like \'%自动导入%\')) or (sys_Fbh > 1 and (接收人 Like " & Role_swtx & ")))" cmd.CommandText ="Se lect count(*) From 事务提醒 where " & flt nm = cmd.ExecuteScalar() If nm > 0 Then \'---显示"待处理"记录数 nd.Text = nd.Name & "(" & nm & ")" Else nd.Text = nd.Name End If End If Exit For End If End If Next tr1.ResumeRedraw() msgbox(2) End If 上面代码上下都用了防止闪烁的代码,为什么还是会闪烁? 谢谢!
[此贴子已经被作者于2017/6/6 18:14:59编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2017/6/5 22:03:00 -- 代码在什么事件的?完成什么功能? |
||||
-- 作者:HappyFt -- 发布时间:2017/6/5 22:18:00 -- 上面代码是在一个函数中,在导航的目录树(节点就是窗口名称)点击打开窗口后就调用这段代码生成当前所选节点表单的可处理记录数用括号显示在后面(5)就是, 现在就是点击报废单打开报废单窗口后导航这个目录树会闪烁一下,这个函数是完全打开窗口后最后才执行的.
[此贴子已经被作者于2017/6/6 18:16:01编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2017/6/5 22:47:00 -- 调用这个函数的事件代码发出来看看 |
||||
-- 作者:HappyFt -- 发布时间:2017/6/5 22:51:00 -- Forms(wn).show \'---(直到表样式及数据都加载后才让窗口显示成为当前活动窗口以避免屏幕闪烁) If Forms(wn).Controls.Contains("Tr_Flow") = True Then Forms("导航").Controls("Tr_All").StopRedraw Functions.Execute("Refresh_Cords") Forms("导航").Controls("Tr_All").ResumeRedraw End If 这里也用了防止闪屏的,函数里也用了,分别把它取消测试也一样都会闪烁
|
||||
-- 作者:有点蓝 -- 发布时间:2017/6/5 23:07:00 -- 这样还会闪么 If Forms(wn).Controls.Contains("Tr_Flow") = True Then Forms("导航").StopRedraw systemready = False Functions.Execute("Refresh_Cords") systemready = True Forms("导航").ResumeRedraw End If [此贴子已经被作者于2017/6/5 23:07:12编辑过]
|
||||
-- 作者:HappyFt -- 发布时间:2017/6/5 23:45:00 -- 一样的闪法 |
||||
-- 作者:有点色 -- 发布时间:2017/6/6 9:06:00 -- 实例发上来看看。 |
||||
-- 作者:HappyFt -- 发布时间:2017/6/6 18:14:00 --
谢谢!
|
||||
-- 作者:有点蓝 -- 发布时间:2017/6/6 20:26:00 -- 导航是树节点闪,录入审批是窗口切换在闪,只不过2个窗口一样,以为是控件闪 最多也就这个效果
|