При создании нового компонента нет смысла заново изобретать велосипед. Как правило, львиная доля методов и свойств вполне успешно наследуется от подходящего класса-предка. Необходимо лишь грамотно выбрать ничего не подозревающего родителя.
На рис. 16.1 приведена иерархия потенциальных предков (последние выделены жирным шрифтом). Непосредственно в качестве предков стартовые классы TObject и TPersistent используются крайне редко. Это абстрактные классы с небогатым набором возможностей (см. главу 6 «Невидимые классы»). Как правило, за отправную точку принимается класс TComponent. Данный класс представляет хорошую платформу для построения невизуальных компонентов. У него уже есть имя Name, он способен хранить список компонентов Components и превосходно им манипулировать. И что очень важно, TCompo-nent умеет сохранять свои свойства в файле *. dfm (Delphi Form File).
Если вам требуется специалист по графике, то рекомендую класс TGraphicControl. Это превосходная основа для будущего графического элемента управления, вооруженного холстом (Canvas) и методом Paint().
Класс TWinControl может похвастаться собственным дескриптором окна, благодаря которому потомки класса способны получать фокус ввода и реагировать на сообщения Windows.
Класс TCustomControl - самое совершенное детище из всех вышеперечисленных потенциальных классов-предков для создания новых компонентов. Он унаследовал достоинства TWinControl и в дополнение к ним обладает своим холстом и методом прорисовки.
Грамотный выбор предка при создании нового компонента значительно упрощает дальнейшую работу программиста. В роли предков могут выступать не только перечисленные выше классы. В иерархии VCL объявлены классы, специально предназначенные для их дальнейшей модернизации. Признаком таких неординарных способностей класса является наличие в названии слова «custom», например TCustomEdit, TCustomLabel, TCustomPanel, TCustomTabControl.