gpt4 book ai didi

delphi - 在运行时从页面控件中删除选项卡

转载 作者:行者123 更新时间:2023-12-03 18:53:29 25 4
gpt4 key购买 nike

根据上一个问题TABS @ RUN TIME,我在运行时创建选项卡。
现在我遇到了在运行时删除选项卡的问题,我的逆函数解决方案如下

procedure TForm.DeleteAllTabs(sender : TObject);
var i : Integer;
begin
for I := 0 to pagecontrol1.PageCount-1 do
pagecontrol1.Pages[i].Destroy
end;


但它声称i超出范围.....(访问冲突)

最佳答案

当'i'最初为'0'时,您将删除Pages[0],剩余的纸张向下移动一个位置。也就是说,删除后,第一张纸仍位于Pages[0]。但是在下一次迭代中,您将跳过第一页删除Pages[1]。最终当您尝试删除不存在的页面时,您会收到错误消息。

逐步说,首先,您有三张纸,


[page0] [page1] [page2]


索引计数器为'0',您删除Pages[0],其余两页移到开头,


[page0] [page1]


索引计数器为“ 1”,则删除第二个页面,即Pages[1]。剩下的只有一页,


[page0]


索引计数器为“ 2”,则删除第三页,即Pages[2]。没有Pages[2],您会收到错误消息。

一种解决方案是始终删除第一页:

 for I := 0  to  pagecontrol1.PageCount-1 do
pagecontrol1.Pages[0].Free;


如TLama的评论中所述,另一个可以开始从最后一页删除。

 for I := pagecontrol1.PageCount-1 downto 0 do
pagecontrol1.Pages[i].Free;

关于delphi - 在运行时从页面控件中删除选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com