Foxtable(狐表)用户栏目专家坐堂 → 屏幕闪烁的问题


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

主题:屏幕闪烁的问题

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
屏幕闪烁的问题  发帖心情 Post By:2017/5/2 11:52:00 [只看该作者]

用查询表的数据绑定到当前表中,如下代码:
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
cmd.CommandText = "Se lect Count(*) From " & tbn & " where " & Filter
cmd.CommandText = sql
Dim dt As DataTable = cmd.ExecuteReader()

Tables(wn & "_主表").DataSource = dt

用了下面这些代码都会导致屏幕或者表闪烁,
DataTables(wn & "_主表").DataCols.Add("选择", Gettype(Boolean))
Tables(wn & "_主表").Cols("选择").Move(0)
Tables(wn & "_主表").Cols("选择").Width = 40
---设置表中各列宽
Dim Csx As String
If dr("showCols") > "" Then
    Csx = dr("showCols")
    Tables(wn & "_主表").SetColVisibleWidth(Csx)
End If
Tables(wn & "_主表").AutoSizeHeaderRow() '自动设置标题行高度
---如果指定了排序列则按其排序
If dr("sortCols") > "" Then
   Tables(wn & "_主表").StopRedraw  '停止绘制防闪屏
   Tables(wn & "_主表").sort = dr("sortCols")
 Tables(wn & "_主表").ResumeRedraw
End If

分别使用了
Tables(wn & "_主表").StopRedraw,  Forms(e.form.name).StopRedraw,    LockBaseMainForm三种方式都解决不了,

有什么办法,还有什么办法?  谢谢!


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


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

 指定的时候,要在你红色代码那里开始指定。

 

 实例说明。


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/5/2 16:39:00 [只看该作者]

当然都有写在当中,上传一个例子,在目录树中点击加载所有和其他就看的出来了

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:闪屏test.rar



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


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

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:闪屏test.zip

 


 


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/5/3 9:26:00 [只看该作者]

同样的代码加到实际的表中,屏幕还是闪烁,后来发现是查询绑定的currentchanged中有如下代码造成的

'---根据当前行的产品编码加载工序明细表的数据
Dim dr As DataRow = DataTables("QtbSet").Find("WintbN = '" & e.Form.name & "_工序明细' and Key is not null")
If dr IsNot Nothing Then
    sql = "Se lect * from dbo." & dr("Key") & "('" & r("产品编码") & "')"
    cmd.CommandText = sql
    Dim dt As DataTable = cmd.ExecuteReader()
    Dim tbl As Table = Tables(e.Table.form.name & "_工序明细")
    'tbl.StopRedraw
    tbl.DataSource = dt
    ' tbl.Fill(sql,Mydata,True)  '如果用fill的方式就会闪屏,加上stopRedraw的代码也没有用,

    Functions.Execute("tablestyle",wn,wn & "_工序明细",dr) '传入参数执行函数显示表的小数位,列宽,行高及合计
    ' tbl.ResumeRedraw
End If

如果用绑定的方式不加任何stopRedraw的代码也不闪,为什么 这样

用tbl.DataSource = dt   与 tbl.Fill(sql,Mydata,True) '查询表

这两种方式有什么不同? 目前我只知道两者都是不能直接保存,fill的表是锁定的,设置了allowedit也没用,绑定的可以修改表通过窗体上按钮等的代码可更新数据


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


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

 fill的话,可以是sqlTable或sqlQuery两种表,sqlTable是可以修改和保存的。

 

 dataSource的话,是副本表,看你本来的表,如果是数据表,自然能修改保存;如果是临时表、查询表、统计表等等,最后数据不能保存。


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17564 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/5/5 11:37:00 [只看该作者]

那用fill屏幕会闪烁有办法控制不闪吗,按例子中的用法不起作用
tbl.StopRedraw
tbl.DataSource = dt
 ' tbl.Fill(sql,Mydata,True)  '如果用fill的方式就会闪屏,加上stopRedraw的代码也没有用,
tbl.ResumeRedraw

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


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

 窗口也要 StopRedraw

 

 如果StopRedraw都不行的话,你尝试隐藏显示表。


 回到顶部