Komponenten in TurboDelphi (Win32) installieren / verwenden
Seit ein paar Tagen stellt Borland bzw. DeveloperToolsGroup(DTG) bereits TurboDelphi
zum Download bereit, und so wie die Server die ersten Tage ausgelastet waren, denke ich mal haben bereits einige Leute TurboDelphi in Benutzung. Das wohl größte Manko der kostenlosen TurboDelphi-Version ist aber, dass man keine Third-Party-Komponenten oder andere Packages installieren (bzw. in die
IDE integrieren) kann. Für Neueinsteiger in die Welt der Komponenten und deren Verwendung soll dieses kleine Tutorial dienen.
In diesem Tutorial verwende ich zur Veranschaulichung die Komponente
TScrollingCredits, welche man im Anhang findet und herunterladen kann.
Möglichkeit 1: Komponenten non-visuell benutzen
Generell können wir also keine Komponenten in die
IDE integrieren (üblicherweise) und damit arbeiten. Aber wen stört das schon? Immerhin können wir die Komponenten immernoch zur Laufzeit des Programmes erzeugen, d.h. wir binden sie einfach direkt per Quelltext ein.
1. Die meisten Komponenten (oder jedenfalls recht viele) liegen in direkter Quelltextform vor, dass heißt als
*.pas-Datei. So auch in unserem Beispiel TScrollingCredits. Entpackt das Archiv und kopiert die
Unit credits.pas in das TurboDelphi-Bibliotheksverzeichnis (standardmäßig X:\Programe\Borland\
BDS\4.0\lib) oder erstellt in den Delphi-Optionen einen neuen Bibliothekspfad zu dem Ordner, in dem die
Unit (*.pas) liegt. Diesen Pfad erstellt man folgendermaßen: Hauptmenüpunkt "Tools" => "Optionen" => Unterpunkt "Bibliothek -
Win32". An dieser Stelle ist das Hinzufügen einen neuen Bibliothekspfades möglich. Soviel zur externen Arbeit.
2. Als nächstes starten wir TurboDelphi und legen als erstes ein neues
VCL-Formularprojekt an. Jetzt weiß Delphi natürlich noch nicht in welcher
Unit unsere Komponente liegt, d.h. wir müssen die
Unit zuerst einmal in die
uses-Liste unseres Formulares aufnehmen. Wenn ihr meine Schritte parallel verfolgt, sollte der Projektquelltext jetzt ungefähr so aussehen:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Credits
(* unsere Unit *);
3. Jede Komponente ist lediglich eine Instanz einer Klasse, in unserem Fall heißt unsere Klasse TScrollingCredits, welche in der bereits erwähnten
Unit credits.pas zu finden ist. Also müssen wir - wenn wir eine neue Komponente erzeugen wollen - eine Instanz von der Klasse TScrollingCredits ableiten. Dazu wechseln wir am besten in das Codefenster von unserem Hauptformular. Um eine neue Komponente abzuleiten behandeln wir sie einfach wie jedes andere Objekt oder Variable auch, in dem wir sie erstmal deklarieren. Die Komponente deklarieren wir am besten im
private- oder
public-Abschnitt des Formulares. Ungefähr so sollte euer Code jetzt aussehen:
Delphi-Quellcode:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
MeineCredits : TScrollingCredits; //Komponentenname und von welchem Typ sie abgeleitet wird (Klasse)
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
4. Erst jetzt beginnt die eigentliche Arbeit für Delphi, indem wir die Komponente nun erstellen lassen. Dazu besitzt jede Komponente die Methode
.Create, welche wir lediglich aufrufen müssen. Dabei muss beachtet werden, dass wir nicht die Methode
.Create unserer Komponente
MeineCredits aufrufen können, sondern die
.Create Methode der Klasse TScrollingCredits, da
MeineCredits zu diesem Zeitpunkt noch keine Methoden hat bzw.
MeineCredits ja noch gar nicht vorhanden ist, da wir es ja erst jetzt erzeugen wollen. Eventuell erwartet manche Komponente als Parameter einen Typen
AOwner als Übergabewert. Dies ist in diesem eher kurz ausgelegten Tutorial nicht großartig von Bedeutung, ich selbst nehme meistens
self, jede andere von TComponent abgeleitete Geschichte ist hier aber möglich.
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
MeineCredits := TScrollingCredits.Create(self); //Komponente wird erstellt
end;
5. Kompilieren und erzeugen wir nun unser Projekt sehen wir jedoch noch nichts, d.h. dass Form ist immernoch leer - von der eben erzeugten Komponente keine Spur. Dies liegt daran das Delphi mit der Komponente noch gar nichts anfangen kann, da wir noch gar keine Werte / Einstellungen getätigt haben. Woher soll Delphi wissen auf welches Objekt und an welche Position es die Komponente legen soll? Das klären wir ganz Quick & Dirty hier:
Delphi-Quellcode:
with MeineCredits do
begin
Parent := Self; //Die Komponente braucht ein Elternelement, auf welchem die Komponente abgelegt wird
Height := 100; //Setze Höhe, Breite, Position von oben & Position von links der Komponente
Width := 200;
Top := 20;
Left := 20;
end;
6. Wenn wir jetzt das Projekt kompilieren und erzeugen sind wir am Ziel, die Komponente liegt brav auf den Form und verrichtet ihren Dienst. Natürlich sind weitere Einstellungen jederzeit per Quelltext möglich, Optionen können getätigt werden und alles sollte so sein wie normal im Designer. Everything is possible, fällt mir da spontan ein.
Alles in allem könnte man also sagen wir haben lediglich den Objektinspektor gegen den Codeeditor eingetauscht. Hier nochmal der gesamte Quelltext des Projektes, für die, die zu faul zum Schreiben oder Lesen sind.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Credits;
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
MeineCredits : TScrollingCredits;
//Komponentenname und von welchem Typ sie abgeleitet wird (Klasse)
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
MeineCredits := TScrollingCredits.Create(self);
with MeineCredits
do
begin
Parent := Self;
Height := 100;
Width := 200;
Top := 20;
Left := 20;
end;
end;
end.
Ich hoffe dieses Tutorials ist halbwegs nützlich für euch; da es mein erstes Delphi-Tutorial ist, bitte ich um etwas Nachsicht.
04.10.2006: Änderungen vorgenommen