Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 21. Jun 2002, 12:46
Hi DP-ler,

getrennt von der Einleitung gibt es jetzt erst einmal die erste Runde Theorie. Damit es nicht zu trocken wird, fangen wir mit einer kleinen Grafik an, welche so ähnlich im Delphi 5 Entwickler Handbuch (31-2) zu finden ist, da das aber nicht bei jedem vorliegt, habe ich diese schnell noch einmal erstellt.

http://www.gatenetwork.com/delphi-sa...ts/classes.gif

Alle Klassen, welche in Delphi erstellt werden sind ultimativ von der Basis-Klasse TObject abgeleitet. Die Klasse TObject definiert die grundlegenden Methoden für jedes Objekt, welches in OO-Pascal (der Sprache von Delphi) erstellt wird.

Abgeleitet von TObject ist die Klasse TPersistent. Diese Klasse stellt grundlegende Methoden zum Kopieren (Assign/AssignTo) und zum Streamen nicht-publizierter Eigenschaften zur Verfügung. Die Basis dieser Klasse ermöglicht es der Delphi-IDE mit Drag-&-Drop und dem Object Inspector uns Programmierern mit der VCL zu arbeiten.

VCL

VCL ist die Abkürzung für die Visual Component Library. Die VCL ist die Sammlung aller installierten Komponenten, welche via Drag-&-Drop auf dem Form im Design-Modus angeordnet werden können. Die Nutzung der VCL macht es uns Programmierern leicht, sich auf das Eigentliche, die Erstellung der Programmlogik, zu konzentrieren, da die Erstellung der Benutzerschnittstellen in einem Bruchteil der Zeit erledigt ist.

Dieser Vorteil bringt natürlich auch seine (Geschmackssache: großen) Nachteile mit sich. Die Programme (EXE Dateien) werden um einiges größer, da immer das komplette Handling der VCL mitkompiliert wird. Aber wozu gibt es große Festplatten? Ausserdem werden die Programme meist auch etwas langsamer gegenüber nonVCL-Applikationen. Aber der Unterschied ist nur gering - und ausserdem gibt es schnelle Prozessoren. Wer trotzdem Interesse an nonVCL Programmen hat, sollte sich mal auf Luckies Seite umschauen.

Aber nun zurück zu den Komponenten und der VCL...

Was ist der Unterschied zwischen Komponenten und Controls?

Zurückblickend auf die obige Grafik ist die Antwort eigentlich schnell gefunden. Alle Controls sind Komponenten, da sie von TComponent abgeleitet werden, aber nicht alle Komponenten sind Controls. Was heisst das jetzt für uns?

Die Klasse TComponent führt alle Methoden ein, welche die Delphi IDE benötigt, um Komponenten in der VCL Palette darzustellen. Das heisst für uns, dass alle VCL Komponenten, welche wir erstellen wollen generell von der Klasse TComponent abgeleitet werden müssen. Ein solches Beispiel ist zum Beispiel die Komponente TTimer von der System Palette.

Eine Komponente, welche direkt von TComponent, nicht von TControl, abgeleitet wurde, wird im Delphi-Form-Designer generell durch ein kleines Quadrat dargestellt. Darunter erscheint, sofern man diese Option eingschaltet hat, der Name der Komponente. Diese Komponenten sind zur Laufzeit des Programmes nicht sichtbar und arbeiten im Hintergrund. Solche Komponenten werden direkt durch den Code vom Programmierer gesteuert. Auch die Dialog-Komponenten, wie zum Beispiel TOpenDialog gehören in die Gruppe der Komponenten, nicht zu den Controls. Die Komponente ist zur Laufzeit nicht zu sehen. Sie kann lediglich einen Dialog anzeigen, welcher ansonsten nicht viel mit der Komponente zu tun hat.

Was sind jetzt Controls? Eigentlich ist das jetzt recht einfach - der ganze Rest der Komponenten der VCL Palette, also all jene, welche auch zur Laufzeit zu sehen sind. Da wären die grafischen Controls wie das TLabel und TPaintBox und die "windowed" Controls wie TEdit und TButton.

TGraphicControl und TWinControl

Was soll dieser Unterschied? Eigentlich recht einfach. TGraphicControl ist die Basis aller Controls, welche sich auf dem Form darstellen können, aber keinen Windows-Handle haben und somit auch nicht den Fokus erhalten können.

TWinControl steht nicht für Controls welche durch das OS (Windwows) zur Verfügung gestellt werden, sondern für "windowed" Controls. Das heisst, diese Controls "registrieren" sich bei Windows und erhalten einen Windows-Handle. Dadurch sind solche Controls in der Lage Windows-Botschaften zu erhalten. Diese Controls können auch, sofern das vorgesehen ist, den Fokus durch den Benutzer erhalten.

Für nächsten Mittwoch ist die nächste Runde angesetzt. Dann werden wir nicht gleich mit dem Erstellen einer Komponente anfangen, sondern noch ein wenig Theorie pauken. Thema werden die Exceptions sein.

Bis dann!

[edit 1]Luckies Link auf den aktuellsten Stand gebracht [/edit]
Daniel W.
Ich bin nicht zurück, ich tue nur so