Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Библиотека визуальных компонентов ( VCL ) - это объектно-ориентированная среда на основе визуальных компонентов для разработки пользовательского интерфейса приложений Microsoft Windows . Он написан на Object Pascal .

История [ править ]

VCL был разработан Borland для использования и тесно интегрирован с инструментами Delphi и C ++ Builder RAD .

В 1995 году Borland выпустила Delphi , свой первый выпуск IDE и языка Object Pascal . До этого момента Turbo Pascal от Borland для DOS и Windows был в основном процедурным языком с минимальными объектно-ориентированными функциями и построением фреймворков пользовательского интерфейса с языком, необходимым с использованием фреймворков, таких как Turbo Vision и Object Windows Library . OWL, структура, аналогичная MFC , требовала написания кода для создания объектов пользовательского интерфейса.

Ключевой целью VCL в сочетании с языком Delphi было изменение требований к созданию пользовательского интерфейса. (Для контекста, вариант Pascal для 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 , Митов 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).

См. Также [ править ]

  • C ++ Builder
  • Delphi
  • Delphi для PHP
  • Object Pascal
  • Программный компонент

Ссылки [ править ]

  1. ^ Delphi Component Design, Danny Thorpe, Р9
  2. ^ Delphi Component Design, Danny Thorpe, p11
  3. ^ http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html#compile-time-form-processing
  4. ^ http://docwiki.embarcadero.com/RADStudio/XE6/en/VCL_Overview#Using_Events
  5. Перейти ↑ Delphi Component Design, Danny Thorpe, p12
  6. ^ http://docwiki.embarcadero.com/RADStudio/XE6/en/Understanding_the_Component_Library
  7. ^ http://delphi.about.com/od/delphifornet/a/conspiracydnet_2.htm
  8. ^ http://www.glennstephens.com.au/tech/CSharp4DelphiDevelopers.pdf

Внешние ссылки [ править ]

  • Torry's Delphi Pages Главный репозиторий для бесплатных и коммерческих компонентов VCL.
  • Библиотека визуальных компонентов JEDI (JVCL) и библиотека кода JEDI (JCL): огромная коллекция компонентов с открытым исходным кодом на основе VCL
  • Компания TMS Software, предоставляющая широкий спектр профессиональных компонентов VCL.
  • Компания Mitov Software предоставляет компоненты VCL для видео, аудио, DSP, компьютерного зрения и визуализации данных.
  • Компания DA-SOFT Technologies, предоставляющая библиотеки VCL для высокоскоростного доступа к данным
  • Компания Steema Software предоставляет библиотеку компонентов для построения графиков Teechart VCL
  • Компания Epina GmbH, предоставляющая SDL Component Suite (коллекция VCL)