我有一个TVertScrollBox
控件,里面有一个TRectangle。当我点击一个按钮时,我取出那个矩形,然后在滚动框内复制20次。
// var Rectangle: TRectangle;
VertScrollBox.BeginUpdate;
for i := 0 to 19 do
begin
//Copy the rectangle that is already inside the ScrollBox
Rectangle:= TRectangle(RectangleTemplate.Clone(VertScrollBox));
VertScrollBox.AddObject(Rectangle);
end;
VertScrollBox.EndUpdate;
所以情况如下:
问题
当我按下另一个按钮时,我需要删除滚动机器人中的每个矩形,除了第一个。
我正在进行相反的操作。为了做到这一点,我从SO中找到的答案中获取了代码,该答案表明我应该向后运行循环:
for j := VertScrollBox.ChildrenCount-1 downto 1 do
if (VertScrollBox.Children[j] is TRectangle) then
VertScrollBox.RemoveObject(VertScrollBox.Children[j]);
此代码不起作用,因为未删除矩形。那是因为我在添加时没有为矩形设置Parent
吗?
我也试过像RemoveObject(TRectangleVertScrollBox.Children[j]))
这样的东西,但仍然没有。
答案 0 :(得分:9)
VertScrollBox.AddObject
方法将控件添加到内部滚动框Content
控件。您必须遍历Content
个孩子才能删除添加的控件。
for j := VertScrollBox.Content.ChildrenCount-1 downto 1 do
if (VertScrollBox.Content.Children[j] is TRectangle) then
VertScrollBox.Content.RemoveObject(VertScrollBox.Content.Children[j]);
未添加到Content
的对象类和特定对象实例,但滚动框本身是: