Библиотека визуальных компонентов
![]() | Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( январь 2013 г. ) |
Оригинальный автор(ы) | Борланд |
---|---|
Разработчик(и) | Эмбаркадеро Технологии |
Первоначальный выпуск | 1995 год |
Операционная система | Кроссплатформенность ( Microsoft Windows , macOS , iOS , Android ) |
Тип | графический интерфейс |
Лицензия | Коммерческий |
Веб-сайт | www документация |
Библиотека визуальных компонентов ( VCL ) — это визуальных компонентов на основе объектно-ориентированная среда для разработки пользовательского интерфейса приложений Microsoft Windows . Он написан на Object Pascal .
История
[ редактировать ]VCL был разработан компанией Borland и тесно интегрирован с ними для использования в ее инструментах Delphi и C++Builder RAD .
В 1995 году компания Borland выпустила Delphi, свою первую версию Object Pascal IDE и языка . До этого момента Turbo Pascal от Borland для DOS и Windows был в основном процедурным языком с минимальными объектно-ориентированными функциями и созданием UI-фреймворков на необходимом языке с использованием таких фреймворков, как Turbo Vision и Object Windows Library . OWL, инфраструктура, аналогичная MFC , требовала написания кода для создания объектов пользовательского интерфейса.
Ключевой целью VCL в сочетании с языком Delphi было изменение требований к построению пользовательского интерфейса. (Для контекста: вариант Паскаля для Delphi имел ряд инновационных объектно-ориентированных функций, таких как свойства и информация о типах времени выполнения, вдохновленные Modula и Smalltalk.) В то время большая часть работы с кодом пользовательского интерфейса требовала создания классов, наследующих другие классы, а настраиваемые объекты часто не допускали повторного использования (например, кнопку, выполняющую определенное действие, нельзя повторно использовать в другом приложении). [ 1 ] Код пользовательского интерфейса также был сложным, заставляя программиста понимать и использовать Windows API, управлять ресурсами GDI и т. д. [ 2 ] Наконец, визуальный пользовательский интерфейс, возможно, должен проектироваться визуально, однако большинство инструментов для этого — в то время в основном Visual Basic — делали это с точки зрения кода, выводящего дизайнером, создавая хрупкую, не поддающуюся редактированию вручную ситуацию — проблема, которая до сих пор сохраняется во многих UI-фреймворках, особенно на основе C++, таких как Qt. [ 3 ]
Комбинация языка Delphi и среды VCL, написанной на этом языке, решает эти проблемы следующим образом:
- Платформа потоковой передачи, позволяющая передавать объект и подобъекты в текстовый или двоичный формат — TComponent, корневой класс платформы VCL.
- Конструктор форм, сохраняющий в поток описание объектов, а не код, необходимый для их создания, с объектами, способными создаваться самостоятельно при потоковой передаче описания обратно в поток.
- Возможности языка, которые позволяли настраивать экземпляры класса без создания подклассов двумя способами: во-первых, посредством использования свойств, позволяющих экземплярам объекта иметь собственные поля (например, заголовок), которые можно легко изменять посредством потоковой передачи; во-вторых, позволяя событиям — указателям на методы, вызываемым в определенных местах кода — обрабатываться другим объектом; то есть указатели методов были прикреплены к экземпляру объекта. [ 4 ] Другими словами, это создает «индивидуальное поведение посредством делегирования вместо наследования». [ 5 ]
- Элементы управления, обернутые собственными элементами управления Windows, в инфраструктуре, управляющей ресурсами. [ 6 ]
Сочетание этих возможностей привело к созданию визуального дизайнера, который транслировал описание; форма (окно), созданная на основе этого описания, включая создание всех остальных компонентов этой формы; и код, написанный в одном месте (методы в форме), который может вызываться элементами пользовательского интерфейса в ответ на определенные действия, например нажатие кнопки, вызывающее обработчик событий 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 (Библиотека компонентов для кросс-платформы), был позже разработан для использования в 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 содержат несвязанную графическую библиотеку, называемую библиотекой визуальных классов (VCL).
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Дизайн компонентов Delphi, Дэнни Торп, стр. 9
- ^ Дизайн компонентов Delphi, Дэнни Торп, стр. 11
- ^ «Использование файла пользовательского интерфейса Designer в вашем приложении | Qt 4.8» .
- ^ «Обзор VCL — RAD Studio» .
- ^ Дизайн компонентов Delphi, Дэнни Торп, стр. 12
- ^ «Понимание библиотеки компонентов — RAD Studio» .
- ^ «Уроки Дельфи» .
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 26 января 2014 г. Проверено 28 мая 2014 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка )