关于Listview的重绘问题,奇怪,。。。(100分)

  • 主题发起人 主题发起人 布衣客
  • 开始时间 开始时间

布衣客

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望自绘制ListView控件,就尝试着在其OnCustomDrawitem事件中加入如下代码:
procedure TForm1.Listview1CustomDrawItem(Sender: TCustomListView;
Item: TListItem;
State: TCustomDrawState;
var DefaultDraw: Boolean);
begin
defaultdraw:=True;
with Listview1.canvasdo
begin
if cdsSelected in State then
font.color:=clred
else
font.color:=clblue
end;
end;
然而,另人恐怖的事情发生了,运行程序后,查看资源状况,系统资源迅速、大幅地下降,甚至Windows会弹出“系统资源到了危险的程度”的警告提示框。
去掉上述代码,问题不再出现。在Treeview控件中使用该事件,也没有问题。
这是何原因?难道是D5的BUG?
另外,查阅D5的帮助,说明了Listview的OnCustomdrawitem、OnCustomDrawsubitem、
OnCustomDraw等几个事件必须在listview的OwnerDraw属性设为True才有效,然而好象并非如此。
那么,如何自绘制listview?(关键是资源的问题)请教诸位指点。
 
D4+win98没有问题
 
请参阅“终于抓住你了, BUG! 300分”!!
D5 + win98下, 在 OnCustomDrawItem 事件中对 Font 的操作可能是一个 BUG !!
还是另想高招吧。
 
多人接受答案了。
 
后退
顶部