我用程序动态生成n个页面,每个页面上有200个控件,然后我通过点击菜单项来选择显示页面,在不同的页面之间切换时,屏幕有相当强烈的闪烁,不知各位有什么解决办法没有

解决方案 »

  1.   

    bluespy(先迈左脚,还是右脚 ?) 先生好逗loveyouone 我也有类似的问题,关注中
      

  2.   

    200个控件,my god 我眼花!用DirectX,呵呵
      

  3.   

    在页面显示之前先把该页面上的控件的VISIBLE属性设为FALSE,等页面显示后在把控件的VISIBLE设为TRUE,虽然不能保证没有闪烁,但是肯定会好的多了,甚至可以难以察觉。不过这些控件一定要在TRUE之前CREATE好。
      

  4.   


    1 用内存DC拷贝
    2 你可以自己写WM_ONPAINT的处理,从而优化一下
      

  5.   

    最好把你写在formActived里的代码写在formShow事件中,尤其是一些计算的代码.
    或者写在formcreate事件中
    试试看.
      

  6.   

    补充:
       最好把这些控件都放到一个或几个PANEL里,通过PANEL的可见性来控制控件的可见性,这样效果最好了,不用编复杂的程序。
      

  7.   

    1。在进行大量资料更改前後,利用 WM_SETREDRAW 讯息来控制你的元件暂时不要重画,这不但可以使资料设定速度增快也防止元件闪烁的情况。
    子窗体的构造函数中进行处理:
    Constructor Create(AOnwer:TComponent);
    begin
      Inherited;
      Perform(WM_SETREDRAW, 0, 0);//
      ......
    end;
    在需要显示的时候用如下方法:
    ShowWindow(Child.Handle, SW_Show);
    2。一般的方法:
    LockWindowUpdate(handle)
    ...
    lockWindowUpdate(0)
    3.一般的方法
    DisableAlign;
    ....
    EnableAlign;