stringgrid闪烁! (50分)

  • 主题发起人 江西的delphi
  • 开始时间
老兄呀建议你不要用stringgrid,StringGridDrawCell只要窗体重画就会触发此事件。
改用第三方控件:Aligrid
里面一个很好用的功能正好实用你:ColorCell[col,row]:Tcolor
你还可以用上:CellFont[Col,Row]: TFont;

我一直用这Grid控件。
 
to:redsky.l
谢谢老乡的关注!用记录型的动态二维数组也许好一点,我去一下那个控件。
 
to:redsky.l
网上找了一下那个控件,装上去总是说少文件,我用的是d5,烦你发到我信箱去(那个控件),
xzyxm@163.net
 
别在stringgrid.OnDrawCell里写太复杂耗时的处理代码。 建议先将复杂耗时的处理代码的处理的结果画到一个bitmap上(在你修改数据之后, 而不是在刷新屏幕时)。 然后在OnDrawCell里用CopyRect画到Stringgrid里, 这样可以快几倍
修改数据总比屏幕刷新发生的频率低, 这样可以节省大量处理时间。即计算一次, 复制多次。
 
to:pearl
这样不好控制吧,而且我双击某个cell(某套房屋),销售或预定完后又要刷新
stringgrid(即改变这个cell色彩)。有没有点代码,我参考一下。
 
你不会在双击事件里刷新后台bitmap吗?
画stringgrid只用一个copyrect就可以了
 
to:pearl
cell(房屋)销售完后就要刷新stringgrid(改变此cell色彩),
销售界面是ShowModal格式的。
 
对呀。 cell销售完后就刷新后台bitmap相对当前cell位值的图形。 至于刷新stringgrid时, 只要调用copyrect嘛
这样只在你发生销售时才进行较复杂的图像处理, 平时只用到copyrect.
 
网上找了一下那个控件Aligrid
,装上去总是说少文件,我用的是d5,烦你发到我信箱去(那个控件),
xzyxm@163.net
 
在FormOnShow事件里最开头添加一句
Form1.DoubleBuffered:=true;
就行了。。。就不会闪烁了。。。
 
to:IO321
不行,重绘就闪!窗体移就会重绘!
 
网上找了一下那个控件Aligrid
,装上去总是说少文件,我用的是d5,谁有烦你发到我信箱去(那个控件),
xzyxm@163.net
 
用Aligrid控件也会闪!
用Aligrid控件(窗体重画也会触发AligridStringGridDrawCell事件)。是不是?
 
同意楼上的
 
這個好簡單,我已做過了!
 
to:邓娟,forjing_888
你们什么意思?
 
你去下一个D3,可能就好了。D5的是说少一下什么东东,在D3那能找到。

发一个给你!
 
TO:江西的delphi
感冒了,不好意思,几天没上网,见谅。
 
用Aligrid控件也会闪!
用Aligrid控件(窗体重画也会触发AligridStringGridDrawCell事件)。是不是?
 
不要将过程放在AligridStringGridDrawCell中呀~~~

procedure DraGridwCellColor; //自定义过程
var
i,j:integer;
begin
with AligridStringGrid1 do begin
for i:=1 to ColCount-1 do
for j:=1 to RowCount-1 do begin
if (跟据i,j判断) then ColorCell[i,j]:= clFuchsia;
……
if (跟据i,j判断) then ColorCell[i,j]:= clLime;
end;
end;
end;

在FromShow时调用一次,数据大改动调用就行了。

单击单元格时,在MouseDown 事件中用:
MouseToCell(x,y,SelectCol,SelectRow); //(var SelectCol,SelectRow:integer)
然后:
ColorCell[SelectCol,SelectRow]:= 你要的颜色;
这样就不用AligridStringGridDrawCell事件了

 
顶部