La biblioteca de componentes visuales ( VCL ) es un marco orientado a objetos basado en componentes visuales para desarrollar la interfaz de usuario de las aplicaciones de Microsoft Windows . Está escrita en Object Pascal .
Historia
VCL fue desarrollado por Borland para su uso en sus herramientas Delphi y C++Builder RAD , y está estrechamente integrado con ellas .
En 1995, Borland lanzó Delphi, su primera versión de un entorno de desarrollo integrado (IDE) y lenguaje Object Pascal . Hasta ese momento, Turbo Pascal de Borland para DOS y Windows era en gran medida un lenguaje procedimental, con características orientadas a objetos mínimas y la creación de marcos de interfaz de usuario con el lenguaje requerido mediante marcos como Turbo Vision y Object Windows Library . OWL, un marco similar a MFC , requería escribir código para crear objetos de interfaz de usuario.
Un objetivo clave de VCL combinado con el lenguaje Delphi era cambiar los requisitos de la construcción de una interfaz de usuario. (Para ponerlo en contexto, la variante Delphi de Pascal tenía una serie de características innovadoras orientadas a objetos, como propiedades e información de tipo de tiempo de ejecución, inspiradas por Modula y Smalltalk). En ese momento, gran parte del trabajo de código de interfaz de usuario requería crear clases heredadas de otras clases, y los objetos personalizados a menudo no eran reutilizables (por ejemplo, un botón que realiza una acción específica no se puede reutilizar en una aplicación diferente). [1] El código de interfaz de usuario también era complicado, lo que obligaba al programador a comprender y usar la API de Windows, administrar recursos GDI, etc. [2] Finalmente, se podría decir que una interfaz de usuario visual debería diseñarse visualmente, y sin embargo, la mayoría de las herramientas para hacerlo (en ese momento, principalmente Visual Basic) lo hacían en términos de que el diseñador generara código, lo que creaba una situación frágil y no editable manualmente, un problema que todavía persiste hoy en día con muchos marcos de interfaz de usuario, particularmente los basados en C++ como Qt. [3]
La combinación del lenguaje Delphi y el marco VCL escrito en ese lenguaje abordó estos problemas de la siguiente manera:
- Un marco de transmisión que permite transmitir un objeto y subobjetos en formato de texto o binario: TComponent, la clase raíz del marco VCL
- Un diseñador de formularios que guarda en una secuencia, guardando la descripción de los objetos, no el código necesario para crearlos, con objetos capaces de autocrearse al transmitir la descripción de vuelta en
- Características del lenguaje que permitían personalizar instancias de una clase sin subclasificación, de dos maneras: primero, mediante el uso de propiedades, permitiendo que las instancias de un objeto tengan sus propios campos (como un título) fácilmente modificables mediante streaming; segundo, permitiendo que los eventos (punteros de método llamados en lugares específicos del código) sean manejados por otro objeto; es decir, los punteros de método se adjuntaban a una instancia de objeto. [4] En otras palabras, esto crea "comportamientos personalizados a través de la delegación en lugar de la herencia". [5]
- Controles que envolvían controles nativos de Windows, en un marco que administraba recursos [6]
La combinación de estos elementos dio como resultado un diseñador visual que transmitía una descripción; un formulario (ventana) que se construía a sí mismo a partir de esa descripción, incluida la creación de todos los demás componentes de ese formulario; y un código escrito en un solo lugar (métodos en el formulario) que podía ser llamado por elementos de la interfaz de usuario en respuesta a ciertas acciones, como hacer clic en un botón que invoca un controlador de eventos OnClick implementado en el código del formulario. En su momento, esto fue revolucionario, mientras que hoy es un enfoque utilizado por varios otros marcos, como WinForms y Cocoa.
Esto también permitió que se escribieran fácilmente nuevos componentes (nuevas clases visuales o no visuales). La VCL está basada en Windows y sus implementaciones de controles comunes son envoltorios de la API de Windows, por lo que es muy práctica y completamente nativa. Se pueden implementar nuevos controles desde cero o se pueden usar controles de Windows existentes.
Con el lanzamiento de C++ Builder, el compilador de Delphi pudo emitir archivos de encabezado de C++ para unidades compiladas en lenguaje Delphi, y así la flexibilidad del marco de interfaz de usuario de diseño visual y de transmisión estuvo disponible para C++. Los componentes VCL de hecho pueden escribirse en C++, pero en última instancia heredan de los antecesores de Delphi, ya que el compilador y enlazador de C++Builder pueden consumir archivos de objeto y de encabezado producidos por Delphi. Este fue uno de los primeros ejemplos de compatibilidad entre lenguajes, algo nunca visto hasta .Net.
Hoy en día, el VCL incluye cientos de componentes visuales y no visuales, utilizables tanto en los lenguajes Delphi como en C++.
Tecnología
VCL forma una jerarquía de clases con un antecesor común , la clase TComponent (que hereda de TObject, la clase raíz de Delphi Object Pascal ). Este es un enfoque común que comparten el lenguaje de programación Java , Smalltalk , C# y muchos otros lenguajes de programación orientados a objetos .
Los componentes VCL cubren controles de Windows como ventanas ( clase TForm ), controles (por ejemplo, clases TButton, TCheckBox, TLabel) así como acceso a bases de datos (por ejemplo, componentes ADO o IBX) o conexiones a Internet ( componentes Indy ). El enfoque de componentes permite a los programadores extender el VCL con muchos componentes adicionales visuales y no visuales. Existe una gran cantidad de paquetes de componentes gratuitos y comerciales. Entre ellos se encuentran JEDI, TMS, Developer Express, Mitov Software, Raize Software, TurboPower, IOComp, SDL, DA-SOFT Technologies y muchos otros.
Si bien no todos los componentes VCL son seguros para subprocesos , VCL también admite subprocesos múltiples . Un ejemplo es el soporte de subprocesos múltiples integrado de la biblioteca OpenWire VCL.
VCL proporciona soporte nativo para el modelo PME (propiedades, métodos y eventos) en el nivel .NET . [ cita requerida ]
Gran parte del diseño de .NET , especialmente WinForms, está modelado a partir de VCL. Uno de los arquitectos principales de las primeras versiones de Delphi, Anders Hejlsberg , fue contratado por Microsoft y se convirtió en uno de los arquitectos principales de .NET. Esto se convirtió en el tema de una demanda: en ese momento (1996), "Borland alegó que Microsoft había contratado a 34 empleados de Borland durante los últimos 30 meses con el fin de robar secretos comerciales de Borland. Borland también afirmó que Microsoft ofreció y entregó señuelos costosos a los trabajadores de Borland. En dos casos, se involucraron incentivos que superaban el millón de dólares". [7] Según delphi.about.com, la bonificación fue de tres millones de dólares en el caso de Anders. Muchos desarrolladores de Delphi encuentran C# bastante familiar, debido a las similitudes de diseño. [8]
Marcos relacionados
Posteriormente se desarrolló un equivalente multiplataforma de VCL, llamado CLX (Biblioteca de componentes para plataformas cruzadas), para su uso en Delphi , C++Builder y Kylix entre 2000 y 2001. Sin embargo, fue abandonado.
Un segundo marco multiplataforma, FireMonkey , se integró en Delphi y C++Builder XE2 en 2011. FireMonkey es un marco similar a WPF basado en vectores para interfaces de usuario en Windows, OSX, iOS y Android.
El proyecto Lazarus tiene un equivalente portable (*nix, OS/X, Win32/64+wince) llamado LCL , que ya funcionaba cuando surgieron Kylix y CLX. El proyecto mantuvo su rumbo e ignoró a Kylix (y más tarde a FMX).
OpenOffice.org y, por tanto, LibreOffice contienen una biblioteca gráfica no relacionada llamada Visual Class Library (VCL).
Véase también
Referencias
- ^ Diseño de componentes Delphi, Danny Thorpe, pág. 9
- ^ Diseño de componentes Delphi, Danny Thorpe, pág. 11
- ^ "Cómo usar un archivo de interfaz de usuario de diseñador en su aplicación | Qt 4.8".
- ^ "Descripción general de VCL - RAD Studio".
- ^ Diseño de componentes Delphi, Danny Thorpe, pág. 12
- ^ "Comprensión de la biblioteca de componentes - RAD Studio".
- ^ "Tutoriales de Delphi".
- ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 26 de enero de 2014. Consultado el 28 de mayo de 2014 .
{{cite web}}: CS1 maint: archived copy as title (link)

