Visual Component Library

Last updated
Visual Component Library (VCL)
Original author(s) Borland
Developer(s) Embarcadero Technologies
Initial release1995;28 years ago (1995)
Operating system Cross-platform (Microsoft Windows, macOS, iOS, Android)
Type GUI
License Commercial
Website www.embarcadero.com/kr/products/rad-studio
docwiki.embarcadero.com/RADStudio/XE6/en/VCL_Overview

The Visual Component Library (VCL) is a visual component-based object-oriented framework for developing the user interface of Microsoft Windows applications. It is written in Object Pascal.

Contents

History

The VCL was developed by Borland for use in, and is tightly integrated with, its Delphi and C++Builder RAD tools.

In 1995 Borland released Delphi, its first release of an Object Pascal IDE and language. Up until that point, Borland's Turbo Pascal for DOS and Windows was largely a procedural language, with minimal object-oriented features, and building UI frameworks with the language required using frameworks like Turbo Vision and Object Windows Library. OWL, a similar framework to MFC, required writing code to create UI objects.

A key aim of the VCL combined with the Delphi language was to change the requirements of building a user interface. (For context, the Delphi variant of Pascal had a number of innovative object-oriented features, such as properties and runtime type information, inspired by Modula and Smalltalk.) At the time, much UI code work required creating classes inheriting from other classes, and customized objects were often not reusable (for example, a button that performs a specific action cannot be reused in a different application.) [1] UI code was also complicated, forcing the programmer to understand and use the Windows API, manage GDI resources, etc. [2] Finally, a visual user interface arguably should be designed visually, and yet most tools to do so - at the time, mainly Visual Basic - did so in terms of the designer outputting code, creating a fragile, un-manually-editable situation - a problem that still persists today with many UI frameworks, particularly C++-based ones such as Qt. [3]

The combination of the Delphi language and the VCL framework written in that language addressed these by:

The combination of these resulted in a visual designer that streamed a description; a form (window) that constructed itself from that description, including creating all the other components on that form; and code being written in one place (methods on the form) that could be called by UI elements in response to certain actions, such as a button being clicked calling an OnClick event handler implemented in the form code. At the time this was revolutionary, while today it is an approach used by several other frameworks, such as WinForms and Cocoa.

This also allowed new components - new visual or non-visual classes - to be written easily. The VCL is Windows-based and its implementations of common controls are wrappers of the Windows API, thus is close to the ground and fully native. New controls can be implemented from scratch or can use existing Windows controls.

With the release of C++ Builder, the Delphi compiler could emit C++ header files for compiled Delphi-language units, and so the flexibility of the streaming, visually designed UI framework became available for C++. VCL components can in fact be written in C++, but ultimately inherit from Delphi ancestors, since the C++Builder compiler and linker can consume object and header files produced by Delphi. This was one of the first examples of cross-language compatibility, something unseen until .Net.

Today the VCL includes several hundred visual and non-visual components, usable in both the Delphi and C++ languages.

Technology

VCL forms a class hierarchy with a common ancestor, the TComponent class (which inherits from TObject, the root class in Delphi Object Pascal). This is a common approach shared by the Java programming language, Smalltalk, C# and many other object-oriented programming languages.

VCL components cover Windows controls like windows (TForm class), controls (e.g., TButton, TCheckBox, TLabel classes) as well as database access (e.g., ADO or IBX components) or Internet connections (Indy components). The component approach allows programmers to extend the VCL with many visual and non-visual additional components. There is a large number of free and commercial component packages. Among them are JEDI, TMS, Developer Express, Mitov Software, Raize Software, TurboPower, IOComp, SDL, DA-SOFT Technologies and many others.

While not all VCL components are thread-safe, VCL supports multi-threading too. One example is the built in multi-threading support of the OpenWire VCL library.

VCL provides native support for PME (properties, methods and events) model at the .NET level.[ citation needed ]

Much of the .NET design, especially WinForms, is modeled after the VCL. One of the main architects of the first Delphi versions, Anders Hejlsberg, was hired by Microsoft and became one of the main architects of .NET. This became the subject of a lawsuit: at the time (1996), "Borland alleged that Microsoft had hired 34 Borland employees over the past 30 months in order to steal Borland trade secrets. Borland also claimed that Microsoft offered and delivered expensive lures to Borland workers. In two cases, incentives topping $1 million were involved." [7] According to delphi.about.com, the bonus was three million dollars in Anders' case. Many Delphi developers find C# quite familiar, due to the design similarities. [8]

A cross-platform equivalent of the VCL, called CLX (Component Library for Cross Platform), was later developed for use in Delphi, C++Builder and Kylix in 2000–2001. However, it was abandoned.

A second cross-platform framework, FireMonkey, was integrated into Delphi and C++Builder XE2 in 2011. FireMonkey is a vector-based WPF-like framework for UIs on Windows, OSX, iOS and Android.

The Lazarus project has a portable (*nix, OS/X, Win32/64+wince) equivalent called LCL, which was already working when Kylix and CLX emerged. The project maintained its course and ignored Kylix (and later FMX).

OpenOffice.org and thus LibreOffice contain an unrelated graphic library called Visual Class Library (VCL).

See also

Related Research Articles

Pascal is an imperative and procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named after French mathematician, philosopher and physicist Blaise Pascal.

C++Builder is a rapid application development (RAD) environment for developing software in the C++ programming language. Originally developed by Borland, as of 2009 it is owned by Embarcadero Technologies, a subsidiary of Idera. C++Builder can compile apps for Windows, iOS, macOS, and Android. It includes tools that allow drag-and-drop visual development, making programming easier by incorporating a WYSIWYG graphical user interface builder.

Component Library for Cross Platform (CLX), is a cross-platform visual component-based framework for developing Microsoft Windows and Linux applications. It is developed by Borland for use in its Kylix, Delphi, and C++ Builder software development environment.

<span class="mw-page-title-main">Microsoft Foundation Class Library</span> Windows OS object-oriented library

Microsoft Foundation Class Library (MFC) is a C++ object-oriented library for developing desktop applications for Windows.

<span class="mw-page-title-main">Delphi (software)</span> General-purpose programming language and a software product

Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.

The Object Windows Library (OWL) is a C++ object-oriented application framework designed to simplify desktop application development for Windows and OS/2.

Object Pascal is an extension to the programming language Pascal that provides object-oriented programming (OOP) features such as classes and methods.

<span class="mw-page-title-main">Windows Forms</span> Graphical user interface software library

Windows Forms (WinForms) is a free and open-source graphical (GUI) class library included as a part of Microsoft .NET, .NET Framework or Mono, providing a platform to write client applications for desktop, laptop, and tablet PCs. While it is seen as a replacement for the earlier and more complex C++ based Microsoft Foundation Class Library, it does not offer a comparable paradigm and only acts as a platform for the user interface tier in a multi-tier solution.

Borland Kylix is a compiler and integrated development environment (IDE) formerly sold by Borland, but later discontinued. It is a Linux software development environment based on Borland Delphi and Borland C++ Builder, which runs under Microsoft Windows. Continuing Delphi's classical Greek theme, Kylix is the name for an ancient Greek drinking cup. The closest supported equivalent to Kylix is the free Lazarus IDE package, designed to be code-compatible with Delphi. As of 2010 the project has been resurrected in the form of Delphi cross compiler for Mac and Linux, as shown in the Embarcadero's Delphi and C++ Builder roadmap. As of September 2011 with Kylix discontinued the framework for cross-platform development by Embarcadero is FireMonkey.

<span class="mw-page-title-main">Graphical user interface builder</span> Software development tool

A graphical user interface builder, also known as GUI designer or sometimes RAD IDE, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in the source code, with no visual feedback until the program is run. Such tools are usually called the term RAD IDE.

<span class="mw-page-title-main">Lazarus (software)</span> Free cross-platform integrated development environment for Free Pascal

Lazarus is a free, cross-platform, integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler. Its goal is to provide an easy-to-use development environment for programmers developing with the Object Pascal language, which is as close as possible to Delphi.

The Visual Component Framework (VCF) is an abandoned open source project for development under Microsoft Windows and Apple Macintosh that is distributed under the BSD license. It is an advanced C++ application framework that makes it easier to produce GUI-based C++ applications. The framework is C++ design and has built in support for rapid application development. The framework is designed to be portable over multiple platforms and compilers.

Danny Thorpe was an American programmer noted mainly for his work on Delphi.

In Microsoft Windows applications programming, OLE Automation is an inter-process communication mechanism created by Microsoft. It is based on a subset of Component Object Model (COM) that was intended for use by scripting languages – originally Visual Basic – but now is used by several languages on Windows. All automation objects are required to implement the IDispatch interface. It provides an infrastructure whereby applications called automation controllers can access and manipulate shared automation objects that are exported by other applications. It supersedes Dynamic Data Exchange (DDE), an older mechanism for applications to control one another. As with DDE, in OLE Automation the automation controller is the "client" and the application exporting the automation objects is the "server".

Internet Direct, also known as "Indy", is a free software / open source socket library written in Object Pascal, an object-oriented version of Pascal. It includes clients, servers, TCP, UDP, and raw sockets, as well as over 100 higher level protocols implementations such as SMTP, POP3, NNTP, and HTTP. Indy includes support for OpenSSL and Zlib in the protocol implementations. Indy 10 was ported to Free Pascal, and runs on Windows, FreeBSD, Linux, and Darwin.

Embarcadero Technologies, Inc. is an American computer software company that develops, manufactures, licenses and supports products and services related to software through several product divisions. It was founded in 1993, went public in 2000 and private in 2007, and became a division of Idera, Inc. in 2015.

<span class="mw-page-title-main">Teechart</span>

TeeChart is a charting library for programmers, developed and managed by Steema Software of Girona, Catalonia, Spain. It is available as commercial and non-commercial software. TeeChart has been included in most Delphi and C++Builder products since 1997, and TeeChart Standard currently is part of Embarcadero RAD Studio 11 Alexandria. TeeChart Pro version is a commercial product that offers shareware releases for all of its formats, TeeChart. Lite for .NET is a free charting component for the Microsoft Visual Studio .NET community and TeeChart for PHP is an open-source library for PHP environments. The TeeChart Charting Library offers charts, maps and gauges in versions for Delphi VCL/FMX, ActiveX, C# for Microsoft Visual Studio .NET, Java and PHP. Full source code has always been available for all versions except the ActiveX version. TeeChart's user interface is translated into 38 languages.

<span class="mw-page-title-main">FireMonkey</span>

FireMonkey is a cross-platform GUI framework developed by Embarcadero Technologies for use in Delphi, C++Builder or Python, using Object Pascal, C++ or Python to build cross platform applications for Windows, macOS, iOS, and Android. A 3rd party library, FMX Linux, enables the building of FireMonkey applications on Linux.

This page details the history of the programming language and software product Delphi.

References

  1. Delphi Component Design, Danny Thorpe, p9
  2. Delphi Component Design, Danny Thorpe, p11
  3. "Using a Designer UI File in Your Application | Qt 4.8".
  4. "VCL Overview - RAD Studio".
  5. Delphi Component Design, Danny Thorpe, p12
  6. "Understanding the Component Library - RAD Studio".
  7. "Delphi Tutorials".
  8. "Archived copy" (PDF). Archived from the original (PDF) on 2014-01-26. Retrieved 2014-05-28.{{cite web}}: CS1 maint: archived copy as title (link)