Довольно часто в разработке программного обеспечения возникают ситуации, когда необходимо программно удалить компоненты с формы в зависимости от тех или иных условий.
Рассмотрим практически универсальный способ, который, в данном случае, использует только имя компонента (свойство Name).
Допустим , необходимо удалить с формы все компоненты Edit. В нашем простейшем примере данные компоненты будут иметь стандартные имена: «Edit1», «Edit2», …, «Edit10». Все они включают «Edit» и по этому признаку они могут быть легко идентифицированы. Достаточно использовать функцию Pos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
procedure TMyForm.DelButtonClick(Sender: TObject); var i: integer; begin i := 0; //Обход массива компонентов формы в цикле while (i <= MyForm.ControlCount - 1) do begin //Проверка компонента на присутствие в его имени фрагмента ‘Edit’ if Pos('Edit', MyForm.Controls[i].Name) <> 0 then begin MyForm.Controls[i].Free; continue; end; inc(i); end; end; |
Таким образом, обходя массив компонентов формы и проверяя имя компонента, содержится ли в нём «Edit», мы удаляем только те из них, которые необходимо.
Аналогичным способом можно удалить с формы компоненты в соответствии с другими условиями. Для этого вполне достаточно просто изменить условие в операторе if внутри цикла обхода компонентов.
Добавить комментарий