|
|
|
|
Programmieren mit Pascal & DelphiArbeiten mit DelphiErste Schritte mit DelphiKomponentenbibliothek Einführung
|
Mit Delphi 3.0 wurde mit den sogenannten "Packages" eine neue Technologie eingeführt. Ein Package ist eine spezielle dynamische Link-Bibliothek, die von Delphi-Anwendungen oder der Delphi-IDE verwendet wird. Um diese Bibliotheken von anderen DLLs zu unterscheiden, werden sie in Dateien mit der Dateinamenserweiterung DPL (Delphi Package Library) gespeichert.
Delphi unterscheidet zwischen zwei Arten von Packages:
- Laufzeit-Packages,
- Entwurfszeit-Packages.
Laufzeit-Packages werden genutzt, wenn der Benutzer eine Anwendung ausführt. Entwurfszeit-Packages werden verwendet, um Komponenten in der IDE von Delphi zu installieren und spezialisierte Eigenschaftseditoren für benutzerdefinierte Komponenten zu erzeugen. Ein einzelnes Package kann also gleichzeitig als Design- und Laufzeit-Package verwendet werden. Entwurfszeit-Packages rufen häufig Laufzeit-Packages auf.
| | |
Entwurfszeit-Packages stellen ein Standardmerkmal von Delphi dar. Sie erleichtern die Distribution und Installation benutzerdefinierter Komponenten. Laufzeit-Packages sind optional, bieten jedoch verschiedene Vorteile im Vergleich zur herkömmlichen Programmierung. Indem mehrfach verwendeter Code in eine Laufzeitbibliothek compiliert wird, kann er von mehreren Anwendungen genutzt werden. So können beispielsweise alle Anwendungen – einschließlich der Delphi-IDE – über Packages auf Standardkomponenten zugreifen. Da die Anwendungen keine eigenen Kopien der verwendeten Komponentenbibliotheken benötigen, sind die ausführbaren Dateien wesentlich kleiner. Das Resultat sind deutliche Einsparungen hinsichtlich der Systemressourcen und des benötigten Festplattenspeichers. Außerdem wird die Compilierung beschleunigt, da nur der für die Anwendung eindeutige Code compiliert werden muß. Man darf dabei jedoch nicht verkennen, daß auch die Packages relativ groß sind. Signifikante Vorteile ergeben sich dadurch erst dann, wenn mehrere Anwendungen auf einem Rechner installiert sind bzw. weitergegeben werden sollen, oder aber wenn eine Anwendung häufige Updates erfährt. In diesem Fall müßte jeweils nur die kleinere EXE-Datei distributiert werden, während die großen Packages unverändert blieben.
Packages in einer Anwendung einsetzen
Das Einbinden eines Packages in einer Anwendung erfolgt über den Dialog Projektoptionen, wo ein Register "Packages" Zugriff auf die Package-Einstellungen bietet:
Abbildung 1: Packages in Projekt einbinden
Im Dialog ist das Kontrollkästchen "Mit Laufzeit-Packages compilieren" zu markieren und ein oder mehrere Package-Namen in das zugehörige Eingabefeld einzugeben. Laufzeit-Packages, die installierten Entwurfszeit-Packages entsprechen, sind bereits in der Liste enthalten.
| Vorteile der Packages | |
Über die Schaltfläche "Hinzufügen" können neue Packages hinzugefügt werden.
Wird das Eingabefeld Suchpfad im Dialogfeld Package hinzufügen verwendet, wirken sich die Änderungen auf den globalen Bibliothekssuchpfad von Delphi aus. Die Angabe der Dateinamenerweiterungen der Package-Dateien ist nicht erforderlich. Werden mehrere Namen in das Feld Laufzeit-Packages eingegeben, so müssen diese durch Semikolons voneinander getrennt sein. Ein Beispiel hierfür:
VCL30;VCLDB30;VCLDBX30
| Neue Packages | |
Packages im Eingabefeld Laufzeit-Packages werden beim Compilieren automatisch in die Anwendung gelinkt. Doppelt angegebene Package-Namen werden ignoriert. Ist das Eingabefeld leer, wird die Anwendung ohne Packages compiliert. Laufzeit-Packages werden für das aktuelle Projekt ausgewählt. Sollen die aktuellen Einstellungen als Standardwerte für neue Projekte verwendet werden, kann dies durch das Markieren des Kontrollkästchens "Vorgabe" erfolgen.
| Linken | |
Wird eine Anwendung mit Packages erstellt, müssen trotzdem die Namen der Delphi-Units in der uses-Klausel der Quelltextdateien angegeben sein.
Laufzeit-Packages
Laufzeit-Packages werden mit Delphi-Anwendungen weitergegeben. Ihre Funktionalität kann genutzt werden, wenn der Benutzer die Anwendung ausführt.
Damit eine Anwendung ausgeführt werden kann, die Packages verwendet, müssen auf dem Rechner die EXE-Datei der Anwendung und alle Packages (DPL-Dateien) verfügbar sein, auf die von der Anwendung zugegriffen wird. Ferner ist sicherzustellen, daß der Benutzer über die richtigen Versionen der DPL-Dateien verfügt.
| Referenzieren | |
Delphi wird mit verschiedenen vorcompilierten Laufzeit-Packages (inklusive VCL30) ausgeliefert, um die grundlegenden Object Pascal- und VCL-Komponenten zu unterstützen. In früheren Versionen von Delphi wurde diese Funktionalität erreicht, indem die Komponentenbibliothek vollständig in jede Anwendung eingebunden wurde.
Das Package VCL30 enthält viele der häufig verwendeten Komponenten, Systemfunktionen und Windows-Schnittstellenelemente. Es sind jedoch keine Datenbank- oder Windows-3.1-Komponenten enthalten. Diese befinden sich in anderen Packages. Die folgende Tabelle beschreibt die mit Delphi ausgelieferten Laufzeit-Packages und die enthaltenen Units.
|
Package
|
Units
|
|
VCL30.DPL
|
Ax, Buttons, Classes, Clipbrd, Comctrls, Commctrl, Commdlg, Comobj, Comstrs, Consts, Controls, Ddeml, Dialogs, Dlgs, Dsgnintf, Dsgnwnds, Editintf, Exptintf, Extctrls, Extdlgs, Fileintf, Forms, Graphics, Grids, Imm, IniFiles, Isapi, Isapi2, Istreams, Libhelp, Libintf, Lzexpand, Mapi, Mask, Math, Menu, Messages, Mmsystem, Nsapi, Ole2I, Oleconst, Olectnrs, Olectrls, Oledlg, Penwin, Printers, Proxies, Registry, Regstr, Richedit, Shell-api, Shlobj, Stdctrls, Stdvcl, Sysutils, Tlhelp32, Toolintf, Toolwin, Typinfo, Vclcom, Virtintf, Windows, Wininet, Winsock, Winspool, Winsvc
|
|
VCLX30.DPL
|
Checklst, Colorgrd, Ddeman, Filectrl, Mplayer, Outline, Tabnotbk, Tabs
|
|
VCLDB30.DPL
|
Bde, Bdeconst, Bdeprov, Db, Dbcgrids, Dbclient, Dbcommon, Dbconsts, Dbctrls, Dbgrids, Dbinpreq, Dblogdlg, Dbpwdlg, Dbtables, Dsintf, Provider, SMintf
|
|
Package
|
Units
|
|
VCLDBX30.DPL
|
Dblookup, Report
|
|
DSS30.DPL
|
Mxarrays, Mxbutton, Mxcommon, Mxconsts, Mxdb, Mxdcube, Mxdssqry, Mxgraph, Mxgrid, Mxpivsrc, Mxqedcom, Mxqparse, Mxqryedt, Mxstore, Mxtables, Mxqvb
|
|
INET30.DPL
|
Cgiapp, Copyprsr, Httpapp, Isapiapp, Masks, Scktcomp, Syncobjs, Webconst
|
|
INETDB30.DPL
|
Dbweb
|
|
QRPT30.DPL
|
Qr2const, Qrabout, Qralias, Qrctrls, Qrdatasu, Qrexpbld, Qrextra, Qrprev, Qrprgres, Qrprntr, Qrqred32, Quickrpt
|
|
TEE30.DPL
|
Arrowcha, Bubblech, Chart, Ganttch, Series, Teeconst, TeeFunci, TeEngine, Teeprocs, Teeshape
|
|
TEEDB30.DPL
|
Dbchart, Qrtee
|
|
IBEVNT30.DPL
|
Ibctrls, Ibevnts, Ibproc32, Ibreg
|
Entwurfszeit-Packages
Entwurfszeit-Packages werden zur Installation von Komponenten in der Komponentenpalette der IDE und zur Bereitstellung spezieller Eigenschaftseditoren für benutzerdefinierte Komponenten verwendet.
Delphi wird mit den folgenden Entwurfszeit-Packages ausgeliefert, die in der IDE vorinstalliert sind.
|
Package
|
Registerkarten Komponentenpalette
|
|
DCLSTD30.DPL
|
Standard, Zusätzlich, System, Win32, Dialoge
|
|
DCLTEE30.DPL
|
Zusätzlich (Komponente TChart)
|
|
DCLDB30.DPL
|
Datenzugriff, Datensteuerung
|
|
DCL31W30.DPL
|
Win 3.1
|
|
DCLNET30.DPL
|
Internet
|
|
DCLISP30.DPL
|
Internet
|
|
DCLSMP30.DPL
|
Beispiele
|
|
DCLOCX30.DPL
|
ActiveX
|
|
DCLQRT30.DPL
|
QReport
|
|
DCLDSS30.DPL
|
Entscheidungswürfel
|
|
IBEVNT30.DPL
|
Beispiele (Komponente IBEvent-Alerter)
|
Diese Entwurfszeit-Packages rufen Laufzeit-Packages auf, die sie in den requires-Klauseln referenzieren. STDLIB, das die meisten Standardkomponenten in der Komponentenpalette bereitstellt, referenziert beispielsweise VCL30.
Benutzerdefinierte Packages
Außer den vorinstallierten Packages kann man auch eigene Komponenten-Packages oder Komponenten-Packages von Fremdherstellern in der IDE installieren. Das Entwurfszeit-Package DCLUSR30 dient als Standardcontainer für neue Komponenten.
Das Entwickeln neuer Packages wird nachfolgend beschrieben.
| Einsatzgebiete von Laufzeit-Packages
|
|
|