项目修改进行到最后时刻,卡在控件的动态释放上。真是无语,好在同事的帮助,搞定。
//循环释放之前生成的标疑题卡
for k := pnl1.Controlcount -1 downto 0 do
begin
if pos(‘by’, pnl1.Controls[k].Name) >0 then
begin
(pnl1.Controls[k] as TPanel).Visible :=False;
pnl1.Controls[k].Free;
end;
end;
不能使用 for i:=0 to pnlTestNOPageBY.Controlcount
原因:当一个控件被释放之后,Controlcount 会重新统计 (Controlcount 是递减的)
当i 的值大于 Controlcount 后,就会造成数组越界的悲剧。
注意:delphi 控件有两种 Control 和Component
不同的控件需要使用不同的函数控制。
FindChildControl与FindComponent的区别见
http://blog.csdn.net/tht2009/article/details/6954880
delphi 循环动态释放控件