HOME

TheInfoList



OR:

The Visual Component Library (VCL) is a visual
component Circuit Component may refer to: •Are devices that perform functions when they are connected in a circuit.   In engineering, science, and technology Generic systems * System components, an entity with discrete structure, such as an assem ...
-based
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
framework A framework is a generic term commonly referring to an essential supporting structure which other things are built on top of. Framework may refer to: Computing * Application framework, used to implement the structure of an application for an op ...
for developing the user interface of
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
applications. It is written in
Object Pascal Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods. ...
.


History

The VCL was developed by Borland for use in, and is tightly integrated with, its
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
and
C++Builder C++Builder is a rapid application development (RAD) environment, originally developed by Borland and owned by Embarcadero Technologies (a subsidiary of Idera Software, Idera), for writing programs in the C++ programming language currently targeti ...
RAD RAD or Rad may refer to: People * Robert Anthony Rad Dougall (born 1951), South African former racing driver * Rad Hourani, Canadian fashion designer and artist * Nickname of Leonardus Rad Kortenhorst (1886–1963), Dutch politician * Radley R ...
tools. In 1995 Borland released Delphi, its first release of an
Object Pascal Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods. ...
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 The Object Windows Library (OWL) is a C++ object-oriented application framework designed to simplify desktop application development for Windows and (some releases) OS/2. OWL was introduced by Borland in 1991 and eventually deprecated in 1997 i ...
. 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.) UI code was also complicated, forcing the programmer to understand and use the Windows API, manage GDI resources, etc. 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. The combination of the Delphi language and the VCL framework written in that language addressed these by: * A streaming framework, allowing an object and subobjects to be streamed to text or binary format - TComponent, the root class of the VCL framework * A form designer that saved to a stream, saving the description of the objects not the code required to create them, with objects capable of self-creation when streaming the description back in * Language features that allowed instances of a class to be customised without subclassing, in two ways: first, through the use of properties, allowing instances of an object to have its own fields (such as a caption) easily changed through streaming; second, by allowing events - method pointers called at specific places in code - to be handled by another object; that is, the method pointers were attached to an object instance. In other words, this creates "custom behaviours through delegation instead of inheritance". * Controls that wrapped native Windows controls, in framework that managed resources 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 Class or The Class may refer to: Common uses not otherwise categorized * Class (biology), a taxonomic rank * Class (knowledge representation), a collection of individuals or objects * Class (philosophy), an analytical concept used differentl ...
hierarchy with a common
ancestor An ancestor, also known as a forefather, fore-elder or a forebear, is a parent or (recursively) the parent of an antecedent (i.e., a grandparent, great-grandparent, great-great-grandparent and so forth). ''Ancestor'' is "any person from whom ...
, the TComponent class (which inherits from TObject, the root class in
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
Object Pascal Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods. ...
). This is a common approach shared by the
Java programming language Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers ''write once, run anywh ...
,
Smalltalk Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by Alan Ka ...
, C# and many other
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
programming languages. VCL components cover Windows controls like windows (TForm
class Class or The Class may refer to: Common uses not otherwise categorized * Class (biology), a taxonomic rank * Class (knowledge representation), a collection of individuals or objects * Class (philosophy), an analytical concept used differentl ...
), controls (e.g., TButton, TCheckBox, TLabel classes) as well as
database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
access (e.g., ADO or IBX components) or Internet connections (
Indy Indy may refer to: Computing and technology *Indy (software), used for Internet access to music *Internet Direct, or "Indy", a software library *SGI Indy, a computer workstation Periodicals *''The Indy'', shorthand for newspapers that include " ...
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 Jedi (), Jedi Knights, or collectively the Jedi Order are the main heroic protagonists of many works of the '' Star Wars'' franchise. Working symbiotically alongside the Old Galactic Republic, and later supporting the Rebel Alliance, the Jedi O ...
, TMS, Developer Express, Mitov Software, Raize Software, TurboPower, IOComp, SDL, DA-SOFT Technologies and many others. While not all VCL components are
thread-safe Thread safety is a computer programming concept applicable to multi-threaded code. Thread-safe code only manipulates shared data structures in a manner that ensures that all threads behave properly and fulfill their design specifications without uni ...
, 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. Much of the .NET design, especially WinForms, is modeled after the VCL. One of the main architects of the first Delphi versions,
Anders Hejlsberg Anders Hejlsberg (, born 2 December 1960) is a Danish software engineer who co-designed several programming languages and development tools. He was the original author of Turbo Pascal and the chief architect of Delphi. He currently works for Mic ...
, was hired by
Microsoft Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
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." 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.


Related frameworks

A cross-platform equivalent of the VCL, called CLX (Component Library for Cross Platform), was later developed for use in
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
,
C++Builder C++Builder is a rapid application development (RAD) environment, originally developed by Borland and owned by Embarcadero Technologies (a subsidiary of Idera Software, Idera), for writing programs in the C++ programming language currently targeti ...
and Kylix in 2000–2001. However, it was abandoned. A second cross-platform framework,
FireMonkey FireMonkey (abbreviated FMX) is a cross-platform GUI framework developed by Embarcadero Technologies for use in Delphi or C++Builder, using Object Pascal or C++ to build cross platform applications for Windows, macOS, iOS, and Android. A 3r ...
, 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 OpenOffice.org (OOo), commonly known as OpenOffice, is a discontinued open-source office suite. Active successor projects include LibreOffice (the most actively developed), Apache OpenOffice, Collabora Online (enterprise ready LibreOffice) a ...
and thus
LibreOffice LibreOffice () is a free and open-source productivity software, office productivity software suite, a project of The Document Foundation (TDF). It was fork (software development), forked in 2010 from OpenOffice.org, an open-sourced version of t ...
contain an unrelated graphic library called ''Visual Class Library'' (VCL).


See also

*
C++Builder C++Builder is a rapid application development (RAD) environment, originally developed by Borland and owned by Embarcadero Technologies (a subsidiary of Idera Software, Idera), for writing programs in the C++ programming language currently targeti ...
*
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
*
Delphi for PHP Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
*
Object Pascal Object Pascal is an extension to the programming language Pascal (programming language), Pascal that provides object-oriented programming (OOP) features such as Class (computer programming), classes and Method (computer programming), methods. ...
*
Software component Component-based software engineering (CBSE), also called component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a give ...


References


External links


Torry's Delphi Pages
The main repository for free and commercial VCL components
JEDI Visual Component Library
(JVCL) an
JEDI Code Library
(JCL): huge open source collection of components based on VCL
TMS software
Company providing a wide range of professional VCL components
Mitov Software
Company providing Video, Audio, DSP, Computer Vision, and data visualization VCL components
DA-SOFT Technologies
Company providing high-speed data access VCL libraries
Steema Software
Company providing
Teechart 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 si ...
VCL Charting Component library
Epina GmbH
Company providing the SDL Component Suite (VCL collection) {{Widget toolkits Borland Component-based software engineering Computer libraries Pascal (programming language) libraries Pascal (programming language) software