[компонентный подход] предоставляет явные преимущества. А что делать, если нет нужного или если то, что есть, не обеспечивает желательный функционал программы?
Выход 1
Интернет просто кишит разного рода компонентами, а форумы — соответствующими темами по Delphi. Трудно выбрать нужное из такой массы или найти компонент именно под используемую версию. К тому же, если ты воспользовался сторонними компонентами, программа начинает работать так, как хотел разработчик компонентов, а не как хотел ты. Тебе достанутся ошибки разработчика, его неоптимальный код, его тормоза в работе программы и т.д. Не обольщайся, идеальных программ просто не бывает — их разрабатывают люди.
Выход 2
Неужели руки большинства разработчиков растут настолько криво? Что, нельзя уже и собственными компонентами обзавестись? Конечно, на такой случай никто не станет изобретать велосипед, но бывает, что не удается найти именно велосипед. В Delphi используется обычная объектная модель и каждый компонент является потомком какого-нибудь базового класса. Работает нормальная наследуемость свойств и методов, их переопределение. Приведем простенький пример создания собственного компонента (в конце концов, все не так сложно). Запускаешь Delphi for Microsoft Win32. Выбираешь тип проекта: Delphi Projects\Delphi Files-> Component...
Появляется окно выбора компонента, потомком которого будет наш собственный компонент. Мы хотим просто добавить некое свойство MyInt к стандартному набору свойств компонента TButton — выбираем его и указываем, на какой вкладке палитры компонентов должен быть помещен новый компонент.
Компилируем проект через <Shift>+<F9> или Project\Build Paqckage1. В директории, выставленной по умолчанию для новых проектов, появится файл Package1.bpl. Теперь закрыть все и открыть меню Component\Install Packages. Добавить путь к указанному файлу, нажать вездесущую кнопку ОК. Теперь, если будет создан новый проект для Win32 и если будет открыта вкладка Samples, то можно поместить на форму компонент MyButton, уже содержащий новое свойство MyInt.