Visual Component Library ( VCL ) — это визуальный компонентный объектно-ориентированный фреймворк для разработки пользовательского интерфейса приложений Microsoft Windows . Он написан на языке Object Pascal .
VCL был разработан компанией Borland для использования в инструментах RAD Delphi и C++Builder и тесно интегрирован с ними .
В 1995 году Borland выпустила Delphi, свой первый релиз Object Pascal IDE и языка. До этого момента Turbo Pascal от Borland для DOS и Windows был в основном процедурным языком с минимальными объектно-ориентированными функциями и созданием фреймворков пользовательского интерфейса с требуемым языком с использованием фреймворков вроде Turbo Vision и Object Windows Library . OWL, фреймворк, аналогичный MFC , требовал написания кода для создания объектов пользовательского интерфейса.
Ключевой целью VCL в сочетании с языком Delphi было изменение требований к построению пользовательского интерфейса. (Для контекста, вариант Delphi Pascal имел ряд инновационных объектно-ориентированных функций, таких как свойства и информация о типе времени выполнения, вдохновленная Modula и Smalltalk.) В то время большая часть работы над кодом пользовательского интерфейса требовала создания классов, наследующих от других классов, а настраиваемые объекты часто не поддавались повторному использованию (например, кнопка, которая выполняет определенное действие, не может быть повторно использована в другом приложении.) [1] Код пользовательского интерфейса также был сложным, заставляя программиста понимать и использовать API Windows, управлять ресурсами GDI и т. д. [2] Наконец, визуальный пользовательский интерфейс, возможно, должен быть спроектирован визуально, и все же большинство инструментов для этого — в то время, в основном Visual Basic — делали это с точки зрения дизайнера, выводящего код, создавая хрупкую, не поддающуюся ручному редактированию ситуацию — проблема, которая все еще сохраняется сегодня во многих фреймворках пользовательского интерфейса, особенно основанных на C++, таких как Qt. [3]
Сочетание языка Delphi и фреймворка VCL, написанного на этом языке, позволило решить эти проблемы следующим образом:
Комбинация этих факторов привела к визуальному конструктору, который передавал описание; форме (окну), которая конструировала себя из этого описания, включая создание всех других компонентов на этой форме; и коду, написанному в одном месте (методы на форме), который мог вызываться элементами пользовательского интерфейса в ответ на определенные действия, такие как нажатие кнопки, вызывающее обработчик событий OnClick, реализованный в коде формы. В то время это было революционно, а сегодня это подход, используемый несколькими другими фреймворками, такими как WinForms и Cocoa.
Это также позволило легко писать новые компоненты — новые визуальные или невизуальные классы. VCL основан на Windows, а его реализации общих элементов управления являются оболочками Windows API, поэтому он близок к основе и полностью нативен. Новые элементы управления могут быть реализованы с нуля или могут использовать существующие элементы управления Windows.
С выпуском C++ Builder компилятор Delphi мог выдавать файлы заголовков C++ для скомпилированных модулей языка Delphi, и поэтому гибкость потоковой, визуально спроектированной структуры пользовательского интерфейса стала доступна для C++. Компоненты VCL на самом деле могут быть написаны на C++, но в конечном итоге наследовать от предков Delphi, поскольку компилятор и компоновщик C++Builder могут использовать объектные и заголовочные файлы, созданные Delphi. Это был один из первых примеров кросс-языковой совместимости, чего не было до .Net.
Сегодня VCL включает в себя несколько сотен визуальных и невизуальных компонентов, которые можно использовать как в языках Delphi, так и в C++.
VCL формирует иерархию классов с общим предком , классом TComponent (который наследует от TObject, корневого класса в Delphi Object Pascal ). Это общий подход, разделяемый языками программирования Java , Smalltalk , C# и многими другими объектно-ориентированными языками программирования.
Компоненты VCL охватывают элементы управления Windows, такие как окна ( класс TForm ), элементы управления (например, классы TButton, TCheckBox, TLabel), а также доступ к базе данных (например, компоненты ADO или IBX) или интернет-соединения ( компоненты Indy ). Компонентный подход позволяет программистам расширять VCL множеством визуальных и невизуальных дополнительных компонентов. Существует большое количество бесплатных и коммерческих пакетов компонентов. Среди них JEDI, TMS, Developer Express, Mitov Software, Raize Software, TurboPower, IOComp, SDL, DA-SOFT Technologies и многие другие.
Хотя не все компоненты VCL потокобезопасны , VCL также поддерживает многопоточность . Одним из примеров является встроенная поддержка многопоточности библиотеки OpenWire VCL.
VCL обеспечивает встроенную поддержку модели PME (свойства, методы и события) на уровне .NET . [ необходима ссылка ]
Большая часть дизайна .NET , особенно WinForms, смоделирована по образцу VCL. Один из главных архитекторов первых версий Delphi, Андерс Хейлсберг , был нанят Microsoft и стал одним из главных архитекторов .NET. Это стало предметом судебного иска: в то время (1996) «Borland утверждала, что Microsoft наняла 34 сотрудника Borland за последние 30 месяцев, чтобы украсть коммерческие секреты Borland. Borland также утверждала, что Microsoft предлагала и поставляла дорогие приманки работникам Borland. В двух случаях были задействованы поощрения, превышающие 1 миллион долларов». [7] Согласно delphi.about.com, в случае Андерса премия составила три миллиона долларов. Многие разработчики Delphi находят C# довольно знакомым из-за сходства дизайна. [8]
Кроссплатформенный эквивалент VCL, называемый CLX (Component Library for Cross Platform), был позже разработан для использования в Delphi , C++Builder и Kylix в 2000–2001 годах. Однако от него отказались.
Второй кроссплатформенный фреймворк, FireMonkey , был интегрирован в Delphi и C++Builder XE2 в 2011 году. FireMonkey — это векторный WPF-подобный фреймворк для пользовательских интерфейсов на Windows, OSX, iOS и Android.
Проект Lazarus имеет переносимый (*nix, OS/X, Win32/64+wince) эквивалент под названием LCL , который уже работал, когда появились Kylix и CLX. Проект продолжал свой курс и игнорировал Kylix (и позже FMX).
OpenOffice.org и, следовательно, LibreOffice содержат не связанную графическую библиотеку, называемую Visual Class Library (VCL).
{{cite web}}
: CS1 maint: archived copy as title (link)