求教一个Win XP下TListView重绘后刷新问题 ( 积分: 100 )

  • 主题发起人 主题发起人 geniefire
  • 开始时间 开始时间
G

geniefire

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中,对TListView的Item重绘后,在Win2000下运行正常.但在XP下,拖动列的时候会出现很多重影.谁能告诉我这是为什么啊?如何解决?
 
我的程序中,对TListView的Item重绘后,在Win2000下运行正常.但在XP下,拖动列的时候会出现很多重影.谁能告诉我这是为什么啊?如何解决?
 
用refresh看一下
 
删掉所有 XPManifest 控件和 uses Themes,然后
在工程文件 *.prj 中加上 {$R WindowsXP.res}
 
我知道大概的原因了,在XP下,显示器属性->效果 下有个"拖动时显示窗口内容"选项是默认选上的.在这种情况下,我重绘时原来的内容没有被清除掉,所以才有重影.谁知道怎么解决?
vvyang:我怎么找不到Themes,Use的时候报错.
 
补充一下,我用的是delphi6.
 
这个应该是由于往窗口上画的时候有抖动引起的,TListView有一个继承的属性是DoubleBuffered,把它设为True,就能减少抖动,原因是这个画的动作在内存中进行,然后才在画面上表现出来.这样做只是会占用一些内存,但是这点内存,在现在不值一提.
 
我试过用DoubleBuffered了,还是会有重影.如果把WINDOWS"拖动时显示窗口内容"这个选项去掉,就不会有重影了.但是我们做的软件,不能要求用户去改WINDOWS的设置啊.
 
Win XP下,如果内存不够,设置"拖动时显示窗口内容",它本身的窗口就会有重影。要不,这个只能让客户把那个选项去掉了。
 
问题我解决了.在设置"拖动时显示窗口内容"的时候,系统是先重画,然后,再改变ListView的列宽的.只要再ListView列改变的时候,调一个重绘就可以了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部