Bibliothek für visuelle Komponenten - Visual Component Library

Visuelle Komponentenbibliothek (VCL)
Originalautor(en) Borland
Entwickler Embarcadero-Technologien
Erstveröffentlichung 1995 ; vor 26 Jahren ( 1995 )
Betriebssystem Plattformübergreifend ( Microsoft Windows , macOS , iOS , Android )
Typ GUI
Lizenz Werbung
Webseite www .embarcadero .com /kr /products /rad-studio
docwiki .embarcadero .com /RADStudio /XE6 /de /VCL _Übersicht

Die Visual Component Library ( VCL ) ist ein auf visuellen Komponenten basierendes objektorientiertes Framework zur Entwicklung der Benutzeroberfläche von Microsoft Windows- Anwendungen. Es ist in Object Pascal geschrieben .

Geschichte

Die VCL wurde von Borland für die Verwendung in den Delphi- und C++Builder- RAD- Tools entwickelt und ist eng in diese integriert .

1995 veröffentlichte Borland Delphi, seine erste Veröffentlichung einer Object Pascal- IDE und -Sprache. Bis zu diesem Zeitpunkt war Turbo Pascal von Borland für DOS und Windows weitgehend eine prozedurale Sprache mit minimalen objektorientierten Funktionen und dem Erstellen von UI-Frameworks mit der erforderlichen Sprache unter Verwendung von Frameworks wie Turbo Vision und Object Windows Library . OWL, ein ähnliches Framework wie MFC , erforderte das Schreiben von Code, um UI-Objekte zu erstellen.

Ein Hauptziel der VCL in Kombination mit der Delphi-Sprache war es, die Anforderungen zum Erstellen einer Benutzeroberfläche zu ändern. (Für den Kontext hatte die Delphi-Variante von Pascal eine Reihe innovativer objektorientierter Funktionen, wie Eigenschaften und Laufzeittypinformationen, inspiriert von Modula und Smalltalk.) Zu dieser Zeit erforderte viel UI-Code-Arbeit das Erstellen von Klassen, die von anderen Klassen erben, und benutzerdefinierte Objekte waren oft nicht wiederverwendbar (z. B. kann eine Schaltfläche, die eine bestimmte Aktion ausführt, nicht in einer anderen Anwendung wiederverwendet werden). Der UI-Code war ebenfalls kompliziert und zwang den Programmierer, die Windows-API zu verstehen und zu verwenden, GDI-Ressourcen zu verwalten usw. Schließlich sollte eine visuelle Benutzeroberfläche wohl visuell gestaltet werden, und dennoch taten die meisten Tools dafür - damals hauptsächlich Visual Basic - dies in Bezug auf die Codeausgabe des Designers, wodurch eine fragile, nicht manuell bearbeitbare Situation geschaffen wurde - a Problem, das auch heute noch bei vielen UI-Frameworks besteht, insbesondere bei C++-basierten wie Qt.

Die Kombination der Delphi-Sprache und des in dieser Sprache geschriebenen VCL-Frameworks adressierte diese durch:

  • Ein Streaming-Framework, mit dem ein Objekt und Unterobjekte in Text- oder Binärformat gestreamt werden können – TComponent, die Stammklasse des VCL-Frameworks
  • Ein Formulardesigner, der in einem Stream gespeichert hat, der die Beschreibung der Objekte speichert, nicht den Code, der zum Erstellen erforderlich ist, mit Objekten, die beim Zurückstreamen der Beschreibung in einen Stream selbst erstellt werden können
  • Sprachfunktionen, die es ermöglichten, Instanzen einer Klasse ohne Unterklassenbildung auf zwei Arten anzupassen: erstens durch die Verwendung von Eigenschaften, die es Instanzen eines Objekts ermöglichen, ihre eigenen Felder (z. B. eine Beschriftung) durch Streaming einfach zu ändern; zweitens, indem Ereignisse – Methodenzeiger, die an bestimmten Stellen im Code aufgerufen werden – von einem anderen Objekt verarbeitet werden können; das heißt, die Methodenzeiger wurden an eine Objektinstanz angehängt. Mit anderen Worten, dies schafft "benutzerdefinierte Verhaltensweisen durch Delegierung statt Vererbung".
  • Steuerelemente, die native Windows-Steuerelemente umschlossen, in ein Framework, das Ressourcen verwaltete

Die Kombination dieser führte zu einem visuellen Designer, der eine Beschreibung streamte; ein Formular (Fenster), das sich selbst aus dieser Beschreibung erstellt hat, einschließlich der Erstellung aller anderen Komponenten in diesem Formular; und Code wird an einer Stelle geschrieben (Methoden im Formular), der von UI-Elementen als Reaktion auf bestimmte Aktionen aufgerufen werden könnte, wie z. B. das Klicken auf eine Schaltfläche, das einen im Formularcode implementierten OnClick-Ereignishandler aufruft. Zu dieser Zeit war dies revolutionär, während es heute ein Ansatz ist, der von mehreren anderen Frameworks wie WinForms und Cocoa verwendet wird.

Dadurch konnten auch neue Komponenten – neue visuelle oder nicht-visuelle Klassen – einfach geschrieben werden. Die VCL ist Windows-basiert und ihre Implementierungen gemeinsamer Steuerelemente sind Wrapper der Windows-API, also bodennah und vollständig nativ. Neue Steuerelemente können von Grund auf neu implementiert werden oder vorhandene Windows-Steuerelemente verwenden.

Mit der Veröffentlichung von C++ Builder konnte der Delphi-Compiler C++-Header-Dateien für kompilierte Delphi-Spracheinheiten ausgeben, und so wurde die Flexibilität des Streaming-, visuell gestalteten UI-Frameworks für C++ verfügbar. VCL-Komponenten können zwar in C++ geschrieben werden, erben aber letztendlich von Delphi-Vorfahren, da der C++Builder-Compiler und -Linker von Delphi erzeugte Objekt- und Headerdateien verarbeiten kann. Dies war eines der ersten Beispiele für sprachübergreifende Kompatibilität, etwas, das bis .Net unbekannt war.

Heute umfasst die VCL mehrere hundert visuelle und nicht-visuelle Komponenten, die sowohl in Delphi als auch in C++ verwendet werden können.

Technologie

VCL bildet eine Klassenhierarchie mit einem gemeinsamen Vorfahren , die TComponent Klasse (die erbt von TObject, die Wurzelklasse in Delphi Object Pascal ). Dies ist ein gemeinsamer Ansatz, der von der Programmiersprache Java , Smalltalk , C# und vielen anderen objektorientierten Programmiersprachen geteilt wird.

VCL-Komponenten umfassen Windows-Controls wie Windows (TForm- Klasse ), Controls (zB TButton, TCheckBox, TLabel-Klassen) sowie Datenbankzugriff (zB ADO- oder IBX-Komponenten) oder Internetverbindungen ( Indy- Komponenten). Der Komponentenansatz ermöglicht es Programmierern, die VCL um viele visuelle und nicht-visuelle Zusatzkomponenten zu erweitern. Es gibt eine große Anzahl von kostenlosen und kommerziellen Komponentenpaketen. Darunter sind JEDI , TMS , Developer Express , Mitov Software , Raize Software , TurboPower , IOComp , SDL , DA-SOFT Technologies und viele andere.

Obwohl nicht alle VCL-Komponenten threadsicher sind , unterstützt VCL auch Multithreading . Ein Beispiel ist die integrierte Multi-Threading-Unterstützung der OpenWire VCL-Bibliothek.

VCL bietet native Unterstützung für das PME- Modell (Eigenschaften, Methoden und Ereignisse) auf .NET- Ebene.

Ein Großteil des .NET- Designs, insbesondere von WinForms, ist der VCL nachempfunden. Einer der Hauptarchitekten der ersten Delphi-Versionen, Anders Hejlsberg , wurde von Microsoft angeheuert und wurde einer der Hauptarchitekten von .NET. Dies wurde Gegenstand einer Klage: Damals (1996) behauptete Borland, Microsoft habe in den letzten 30 Monaten 34 Borland-Mitarbeiter eingestellt, um Borland-Geschäftsgeheimnisse zu stehlen. Borland behauptete auch, Microsoft habe Borland teure Köder angeboten und geliefert In zwei Fällen waren Anreize von mehr als einer Million US-Dollar beteiligt." Laut delphi.about.com betrug der Bonus im Fall Anders drei Millionen Dollar. Vielen Delphi-Entwicklern kommt C# aufgrund der Designähnlichkeiten ziemlich bekannt vor.

Verwandte Frameworks

Ein plattformübergreifendes Äquivalent der VCL mit dem Namen CLX (Component Library for Cross Platform) wurde später in den Jahren 2000-2001 für die Verwendung in Delphi , C++Builder und Kylix entwickelt . Es wurde jedoch aufgegeben.

Ein zweites plattformübergreifendes Framework, FireMonkey , wurde 2011 in Delphi und C++Builder XE2 integriert. FireMonkey ist ein vektorbasiertes WPF-ähnliches Framework für UIs auf Windows, OSX, iOS und Android.

Das Lazarus- Projekt hat ein portables (*nix, OS/X, Win32/64+wince) Äquivalent namens LCL , das bereits funktionierte, als Kylix und CLX auftauchten. Das Projekt hielt seinen Kurs und ignorierte Kylix (und später FMX).

OpenOffice.org und damit LibreOffice enthalten eine nicht verwandte Grafikbibliothek namens Visual Class Library (VCL).

Siehe auch

Verweise

Externe Links