以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 屏幕闪烁的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99985) |
||||
-- 作者:happyft -- 发布时间: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三种方式都解决不了, 有什么办法,还有什么办法? 谢谢! |
||||
-- 作者:有点色 -- 发布时间:2017/5/2 12:36:00 -- 指定的时候,要在你红色代码那里开始指定。
实例说明。 |
||||
-- 作者:HappyFt -- 发布时间:2017/5/2 16:39:00 -- 当然都有写在当中,上传一个例子,在目录树中点击加载所有和其他就看的出来了 |
||||
-- 作者:有点色 -- 发布时间:2017/5/2 17:09:00 --
|
||||
-- 作者:HappyFt -- 发布时间: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也没用,绑定的可以修改表通过窗体上按钮等的代码可更新数据 |
||||
-- 作者:有点色 -- 发布时间:2017/5/3 9:48:00 -- fill的话,可以是sqlTable或sqlQuery两种表,sqlTable是可以修改和保存的。
dataSource的话,是副本表,看你本来的表,如果是数据表,自然能修改保存;如果是临时表、查询表、统计表等等,最后数据不能保存。 |
||||
-- 作者:HappyFt -- 发布时间:2017/5/5 11:37:00 -- 那用fill屏幕会闪烁有办法控制不闪吗,按例子中的用法不起作用 tbl.StopRedraw tbl.DataSource = dt \' tbl.Fill(sql,Mydata,True) \'如果用fill的方式就会闪屏,加上stopRedraw的代码也没有用, tbl.ResumeRedraw |
||||
-- 作者:有点色 -- 发布时间:2017/5/5 11:40:00 -- 窗口也要 StopRedraw
如果StopRedraw都不行的话,你尝试隐藏显示表。 |