布
布衣客
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?(关键是资源的问题)请教诸位指点。
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?(关键是资源的问题)请教诸位指点。