TPageControl
Минитест на знание VCL
Я решил отнести данный пост к рубрике Редизайн Интерфейса, как наглядный пример того, что заменяя один компонент на другой, пусть и очень похожий функционально, не всегда получается “машинально” обновлять код, используя различные варианты автозамены и прочие ухищрения. Иногда приходится осуществлять полноценный рефакторинг.
Вчера попался мне примерно такой код (я его немного упростил):
procedure TfTest.Button2Click(Sender: TObject); var i: integer; begin i := 0; while PageControl1.PageCount > 1 do begin if PageControl1.ActivePageIndex = i then begin Inc(i); Continue; end; PageControl1.Pages[i].Free; end; end;
Задача вполне тривиальная. Необходимо удалить все страницы PageControl’а кроме активной. Понятно, что реализация не самая элегантная, но на первый взгляд код вполне рабочий. Найдёте ошибку не заглядывая под кат?