Blog

Delphi-Komponenten mit VCL & FireMonkey

3 Apr 2017

Interview mit Bernd Ua und Holger Flick

Komponenten bilden den Grundpfeiler jeder Delphi-Anwendung; doch was genau verbirgt sich dahinter?

Für die Entwicklung eigener Delphi-Komponenten gibt es unterschiedliche Motivationen: von der Zusammenfassung von wiederkehrenden Einstellungen und Standardwerten bis hin zur Kapselung zentraler Algorithmen und Funktionen ist vieles denkbar. Im Vorfeld des Ende Mai stattfindenden Delphi Code Camps haben wir mit Bernd Ua und Holger Flick über das Thema Delphi-Komponenten mit VCL und FireMonkey gesprochen.

Delphi-Komponenten im Interview

Meine Herren, die Entwicklung von Delphi-Komponenten nimmt einen ganz eigenen Stellenwert ein. Was genau kann man sich unter einer Komponente vorstellen? Gibt es ein Äquivalent in anderen Sprachen?

Die meisten Entwickler verbinden mit Komponenten grafische Gestaltungselemente, allerdings gibt es auch zahlreiche Komponenten, die keine grafische Repräsentation haben und stattdessen spezielle Funktionalitäten kapseln und quasi als Blackbox für die Benutzung in der IDE bereitstellen.

Das besondere an der Komponentenentwicklung ist, dass der Entwickler einer Komponente im Endeffekt einen Stakeholder zusätzlich hat: Neben dem Enduser einer Applikation, welche die Komponente benutzt, ist ein weiterer Stakeholder der Softwareentwickler, der die Komponente einsetzt. Daraus resultieren im Endeffekt auch zwei Aufgaben für den Komponentenentwickler, er muss das Laufzeitverhalten in der Applikation genauso im Auge behalten wie das Verhalten zur Designzeit in der Entwicklungsumgebung.

Komponenten sind immer an eine Klassenbibliothek gebunden. In Delphi sind dies zurzeit z.B. die visuelle Komponentenbibliothek VCL und FireMonkey. In .NET finden wir Komponenten für die Winforms Klassenbibliothek oder WPF.

Wie unterscheiden sich Komponenten von Packages?

Packages können Komponenten beinhalten aber daneben zum Beispiel auch IDE-Erweiterungen, wie Experten und Eigenschaftseditoren. Eine Vielzahl von Komponentenbibliotheken werden mittels Packages vertrieben. Packages sind deshalb so beliebt, da die Einbindung von Packages in die Entwicklungsumgebung komfortabel möglich ist und sich so auf einen Rutsch viele Komponenten installieren lassen.

In den vergangenen Jahren hat Delphi eine rasante Entwicklung hingelegt – gerade, wenn es um die Entwicklung für verschiedene Plattformen geht. Hatte das auch Auswirkungen auf die Entwicklung von Komponenten?

Selbstverständlich hatte das Auswirkungen auf die Komponentenentwicklung. Wie bereits erwähnt sind Komponenten immer an eine Klassenbibliothek gebunden. Die VCL ermöglicht nur die Erstellung von Applikationen für Windows mit 32-Bit oder 64-Bit. Möchte man für andere Plattformen entwickeln, so ist man zum Beispiel an FireMonkey gebunden, d.h. man muss seine Komponenten für FireMonkey entwickeln.

Wir werden in unserem Workshop einige Beispiele vorführen, die es dem Entwickler gestatten eine Komponente so zu entwickeln, dass sie mit wenigen Anpassungen für mehrere Klassenbibliotheken bereitgestellt werden kann.

Ein Tipp vorab an Einsteiger: Sollte man aktuell bei der Komponentenentwicklung auf VCL oder FireMonkey setzen?

Es kommt darauf an, welche Zielplattformen die Komponente anbieten soll. Möchte man nur für Windows mit der VCL entwickeln, so erstellt man eine VCL-Komponente. Die meisten Delphi-Anwendungen sind derzeit auf der Basis der VCL erstellt und stellen damit derzeit den größten Markt.

Bei anderen Plattformen muss man eine FireMonkey-Komponente (FMX) verwenden. Insbesondere werden wir in unserem Workshop mit den Framework Neutral Components (FNC) eine weitere Alternative des Drittanbieters TMS Software zu diesen Klassenbibliotheken vorstellen, die weitere Plattformen abdeckt und sowohl in FireMonkey-Anwendungen als auch in VCL-Anwendungen eingesetzt werden kann.

Auf dem Delphi Code Camp beschäftigen Sie sich ausführlich mit dem Thema der Komponenten-Entwicklung. Welche Aspekte sollen dabei besonders im Vordergrund stehen?

Wir werden damit beginnen, gemäß der altbekannten Vorgehensweise die Entwicklung der verschiedenen Varianten von Komponenten vorzustellen. Dabei werden wir auf zahlreiche Fallstricke anhand von praxisnahen Beispielen hinweisen.

Auch die Möglichkeiten der Unterstützung des Entwicklers zur Entwicklungszeit, d.h. also Möglichkeiten der Integration in die Entwicklungsumgebung, werden wir erläutern. Besonderer Wert wird auf die plattformübergreifende Komponentenentwicklung gelegt, d.h. die erstellten Komponenten im Hinblick auf mehrere Klassenbibliotheken zu entwickeln. So wird z.B. eine VCL-Komponente vorgestellt, die die Einbindung von Bildern eines REST-Dienstes vereinfacht. Die Klassenstruktur dieser Komponente wird dabei so ausgelegt, dass sehr schnell eine weitere Variante für die FireMonkey-Klassenbibliothek erstellt werden kann. Hier werden einige Unterschiede zwischen der VCL und FMX herausgearbeitet.

Geschrieben von: Thomas Wießeckel

Thomas Wießeckel ist Redakteur bei Software & Support Media. Seine Themengebiete umfassen Webtechnologien und -Entwicklung sowie die Bereiche Mobile Development und Open Source. Er arbeitet an regelmäßig erscheinenden Magazinen wie dem Entwickler Magazin und dem PHP Magazin mit, hat den PHP User ins Leben gerufen, betreut Sonderhefte aus dem Bereich Mobile Development, ist verantwortlich für die WebTech Conference und die Open Source Expo und lektoriert Bücher zu Themen rund um Webentwicklung. Vor seiner Zeit als Redakteur hat er Soziologie studiert und als freier PHP- und Frontend-Entwickler gearbeitet.