У меня есть 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]))
, но все равно ничего.