Biblioteca de componentes visuales
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á escrito en Object Pascal.
Historia
El VCL fue desarrollado por Borland para su uso y está estrechamente integrado con sus herramientas Delphi y C++Builder RAD.
En 1995, Borland lanzó Delphi, su primera versión de un IDE y lenguaje Object Pascal. Hasta ese momento, Turbo Pascal de Borland para DOS y Windows era en gran medida un lenguaje de procedimiento, con funciones mínimas orientadas a objetos y marcos de trabajo de interfaz de usuario con el lenguaje requerido usando 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 la combinación de VCL con el lenguaje Delphi era cambiar los requisitos para crear una interfaz de usuario. (Para el contexto, la variante Delphi de Pascal tenía una serie de funciones innovadoras orientadas a objetos, como propiedades e información de tipo de tiempo de ejecución, inspiradas en Modula y Smalltalk). 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). El código de la interfaz de usuario también era complicado, lo que obligaba al programador a comprender y usar la API de Windows, administrar los recursos de GDI, etc. Finalmente, podría decirse que una interfaz de usuario visual debe diseñarse visualmente y, sin embargo, la mayoría de las herramientas para hacerlo, en ese momento, principalmente Visual Basic, lo hicieron en términos del código de salida del diseñador, creando una situación frágil, no editable manualmente: un problema que aún persiste hoy en día con muchos marcos de interfaz de usuario, particularmente los basados en C++ como Qt.
La combinación del lenguaje Delphi y el marco VCL escrito en ese lenguaje los abordó de la siguiente manera:
- Un marco de streaming, permitiendo que un objeto y subobjetos sean transmitidos a formato texto o binario - TComponent, la clase raíz del marco VCL
- Un diseñador de forma que guardó a un flujo, guardando la descripción de los objetos no el código requerido para crearlos, con objetos capaces de auto-creación al transmitir la descripción de nuevo en
- Características de lenguaje que permitieron que los casos de una clase se personalizaran sin subclase, de dos maneras: primero, a través del uso de propiedades, permitiendo que los casos de un objeto tengan sus propios campos (como una capción) fácilmente cambiados a través de streaming; segundo, permitiendo que eventos - punteros de método llamados en lugares específicos en código - para ser manejados por otro objeto; es decir, los punteros de método se adjuntaron a una instancia de objeto. En otras palabras, esto crea "comportamientos personales a través de la delegación en lugar de la herencia".
- Controles que envolvieron los controles nativos de Windows, en marco que gestionaron recursos
La combinación de estos dio como resultado un diseñador visual que transmitía una descripción; un formulario (ventana) que se construyó a sí mismo a partir de esa descripción, incluida la creación de todos los demás componentes en ese formulario; y el código que se escribe en un lugar (métodos en el formulario) que los elementos de la interfaz de usuario pueden llamar en respuesta a ciertas acciones, como hacer clic en un botón para llamar a un controlador de eventos OnClick implementado en el código del formulario. En ese momento, esto fue revolucionario, mientras que hoy en día es un enfoque utilizado por varios otros marcos, como WinForms y Cocoa.
Esto también permitió que nuevos componentes (nuevas clases visuales o no visuales) se escribieran fácilmente. La VCL está basada en Windows y sus implementaciones de controles comunes son envoltorios de la API de Windows, por lo que está cerca de la base y es totalmente nativa. Los nuevos controles se pueden implementar desde cero o se pueden usar los controles de Windows existentes.
Con el lanzamiento de C++ Builder, el compilador de Delphi podía emitir archivos de encabezado de C++ para unidades de lenguaje Delphi compiladas y, por lo tanto, la flexibilidad del marco de interfaz de usuario visualmente diseñado y de transmisión estuvo disponible para C++. De hecho, los componentes de VCL se pueden escribir en C++, pero en última instancia se heredan de los ancestros de Delphi, ya que el compilador y el enlazador de C++Builder pueden consumir archivos de objetos y encabezados producidos por Delphi. Este fue uno de los primeros ejemplos de compatibilidad entre idiomas, algo que no se había visto hasta.Net.
Hoy en día, la VCL incluye varios cientos de componentes visuales y no visuales, utilizables en los lenguajes Delphi y C++.
Tecnología
VCL forma una jerarquía de clases con un ancestro común, la clase TComponent (que hereda de TObject, la clase raíz en Delphi Object Pascal). Este es un enfoque común compartido por el lenguaje de programación Java, Smalltalk, C# y muchos otros lenguajes de programación orientados a objetos.
Los componentes de VCL cubren controles de Windows como ventanas (clase TForm), controles (p. ej., clases TButton, TCheckBox, TLabel), así como acceso a bases de datos (p. ej., componentes ADO o IBX) o conexiones a Internet (componentes Indy). El enfoque de componentes permite a los programadores ampliar la VCL con muchos componentes adicionales visuales y no visuales. Hay 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 de VCL son seguros para subprocesos, VCL también admite subprocesos múltiples. Un ejemplo es el soporte integrado de subprocesos múltiples de la biblioteca OpenWire VCL.
VCL proporciona soporte nativo para el modelo PME (propiedades, métodos y eventos) a nivel de.NET.
Gran parte del diseño de.NET, especialmente WinForms, sigue el modelo de VCL. Uno de los principales arquitectos de las primeras versiones de Delphi, Anders Hejlsberg, fue contratado por Microsoft y se convirtió en uno de los principales arquitectos de.NET. Esto se convirtió en objeto de una demanda: en ese momento (1996), 'Borland alegó que Microsoft había contratado a 34 empleados de Borland durante los últimos 30 meses para 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, hubo incentivos que superaron el millón de dólares." Según delphi.about.com, el bono fue de tres millones de dólares en Anders' caso. Muchos desarrolladores de Delphi encuentran que C# es bastante familiar debido a las similitudes de diseño.
Marcos relacionados
Más tarde se desarrolló un equivalente multiplataforma de VCL, llamado CLX (Biblioteca de componentes para plataforma cruzada), para su uso en Delphi, C++Builder y Kylix en 2000–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 portátil (*nix, OS/X, Win32/64+wince) llamado LCL, que ya funcionaba cuando surgieron Kylix y CLX. El proyecto mantuvo su curso e ignoró a Kylix (y luego a FMX).
OpenOffice.org y, por lo tanto, LibreOffice contienen una biblioteca gráfica no relacionada llamada Visual Class Library (VCL).
Contenido relacionado
Web (sistema de programación)
Arial Unicode MS
Problema del barbero durmiendo