La Biblioteca de Componentes Visuales ( VCL ) es un marco de trabajo 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
La VCL fue desarrollada por Borland para su uso en sus herramientas RAD Delphi y C++Builder , con las que está estrechamente integrada.
En 1995, Borland lanzó Delphi, su primer IDE y lenguaje Object Pascal . Hasta ese momento, Turbo Pascal de Borland para DOS y Windows era principalmente un lenguaje procedimental, con mínimas características de programación orientada a objetos, y la creación de marcos de interfaz de usuario con este lenguaje requería el uso de frameworks como Turbo Vision y Object Windows Library . OWL, un framework similar a MFC , requería escribir código para crear objetos de interfaz de usuario.
Un objetivo clave de la VCL combinada con el lenguaje Delphi era cambiar los requisitos para construir una interfaz de usuario. (Para contextualizar, la variante Delphi de Pascal tenía varias características innovadoras orientadas a objetos, como propiedades e información de tipo en tiempo de ejecución, inspiradas en Modula y Smalltalk). En ese momento, gran parte del trabajo de código de la interfaz de usuario requería crear clases que heredaban 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 la 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 generaba código, creando una situación frágil y 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. [ 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 a formato de texto o binario: TComponent, la clase raíz del marco VCL.
- Un diseñador de formularios que guardaba en un flujo, 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.
- Características del lenguaje que permitían personalizar instancias de una clase sin heredar de ella, de dos maneras: primero, mediante el uso de propiedades, permitiendo que las instancias de un objeto tuvieran sus propios campos (como un título) fácilmente modificados mediante transmisión; segundo, permitiendo que los eventos —punteros a métodos llamados en lugares específicos del código— fueran manejados por otro objeto; es decir, los punteros a métodos se adjuntaban a una instancia de objeto. [ 4 ] En otras palabras, esto crea "comportamientos personalizados mediante delegación en lugar de 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 generaba una descripción; un formulario (ventana) que se construía a partir de esa descripción, incluyendo la creación de todos los demás componentes del formulario; y código escrito en un solo lugar (métodos en el formulario) que podía ser invocado por elementos de la interfaz de usuario en respuesta a ciertas acciones, como hacer clic en un botón que activaba un controlador de eventos OnClick implementado en el código del formulario. En su momento, esto fue revolucionario, mientras que hoy en día es un enfoque utilizado por varios otros frameworks, como WinForms y Cocoa.
Esto también permitió escribir nuevos componentes, tanto clases visuales como no visuales, con facilidad. La VCL se basa en Windows y sus implementaciones de controles comunes son adaptadores de la API de Windows, por lo que es muy cercana al entorno nativo. Se pueden implementar nuevos controles desde cero o utilizar controles de Windows ya existentes.
Con el lanzamiento de C++ Builder, el compilador de Delphi podía generar archivos de cabecera de C++ para las unidades compiladas en Delphi, lo que puso a disposición de C++ la flexibilidad del marco de interfaz de usuario visual y de flujo continuo. De hecho, los componentes VCL pueden escribirse en C++, pero en última instancia heredan de sus predecesores de Delphi, ya que el compilador y el enlazador de C++Builder pueden procesar archivos objeto y de cabecera generados por Delphi. Este fue uno de los primeros ejemplos de compatibilidad entre lenguajes, algo que no se vio hasta la llegada de .NET.
Actualmente, la VCL incluye varios cientos de componentes visuales y no visuales, utilizables tanto en el lenguaje Delphi como en el lenguaje C++.
Tecnología
VCL crea 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 que comparten el lenguaje de programación Java , Smalltalk , C# y muchos otros lenguajes de programación orientados a objetos .
Los componentes VCL abarcan 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 basado en componentes permite a los programadores ampliar VCL con numerosos componentes adicionales, tanto visuales como 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 de VCL son seguros para subprocesos , VCL también admite multihilo . Un ejemplo es la compatibilidad integrada con multihilo 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, está modelado a partir 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 fue 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ó costosos incentivos a los trabajadores de Borland. En dos casos, se involucraron incentivos que superaron el millón de dólares". [ 7 ] Según Zarko Gajic, la bonificación fue de tres millones de dólares en el caso de Anders. [ 7 ] Muchos desarrolladores de Delphi encuentran C# bastante familiar, debido a las similitudes de diseño. [ 8 ]
Marcos de referencia relacionados
Posteriormente, entre 2000 y 2001, se desarrolló una versión multiplataforma de la VCL, denominada CLX (Component Library for Cross Platform), para su uso en Delphi , C++Builder y Kylix . Sin embargo, su desarrollo fue abandonado.
Un segundo framework multiplataforma, FireMonkey , se integró en Delphi y C++Builder XE2 en 2011. FireMonkey es un framework vectorial similar a WPF para interfaces de usuario en Windows, OSX, iOS y Android.
El proyecto Lazarus cuenta con una versión portátil (*nix, OS/X, Win32/64+wince) llamada LCL , que ya funcionaba cuando surgieron Kylix y CLX. El proyecto mantuvo su rumbo e ignoró a Kylix (y posteriormente a FMX).
OpenOffice.org y, por lo tanto, LibreOffice contienen una biblioteca gráfica independiente llamada Visual Class Library (VCL). [ 9 ] [ 10 ]
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
- ↑ "Uso de un archivo de interfaz de usuario de diseñador en su aplicación | Qt 4.8" .
- ↑ "Introducción a VCL - RAD Studio" .
- ↑ Diseño de componentes Delphi, Danny Thorpe, pág. 12
- ↑ "Comprendiendo la biblioteca de componentes - RAD Studio" .
- 1 2 Gajic, Zarko. ".Net de Microsoft ES producto de Borland (2/3)" . Programación Delphi: De vuelta al futuro. Archivado del original el 18 de septiembre de 2005.
- ↑ Stephens, Glenn. "C# para desarrolladores de Delphi" (PDF) . Archivado del original (PDF) el 26 de enero de 2014. Consultado el 28 de mayo de 2014 .
- ↑ "Módulo de biblioteca de clases visuales (VCL)" . OpenOffice . Archivado del original el 20 de mayo de 2013.
- ↑ "Biblioteca de clases visuales (VCL)" . LibreOffice . Archivado del original el 27 de marzo de 2025.
- Borland
- Ingeniería de software basada en componentes
- Bibliotecas informáticas
- Bibliotecas de Pascal (lenguaje de programación)
- Software programado en Pascal